パス

システムの中に存在するファイル、ディレクトリーをプログラム内から指定する方法です。 ファイル、ディレクトリーの場所を示す文字列を パス(path) と呼びます。

パスの書き方には 絶対パス相対パス があります。

絶対パス

絶対パスとは、ファイルシステムのルート(先頭のディレクトリー)から辿ったパスです。

../_images/path_001.png

file_a1.txt を絶対パスで表すと /A/file_a1.txt となります。

先頭のディレクトリーは / で表します。

Windowsの場合はドライブが先頭のディレクトリーになるので、ドライブ名を追加した C:/ などが先頭のディレクトリーになります。

先頭のディレクトリー / に続けてファイルまでのディレクトリー名を / で区切って書いていきます。最後がファイル名です。

file_e1.txt の絶対パスは /C/E/file_e1.txt です。

カレントディレクトリー

カレントディレクトリーとは、現在、実行中のディレクトリーです。Pythonプログラムを実行している場合、プログラムを起動しているディレクトリーになります。 ここでは、Pythonファイルと同じディレクトリーで実行しているとします。

相対パス

相対パスとは、カレントディレクトリーから辿ったパスです。

カレントディレクトリーを /A として、ディレクトリー /A の中にある sample1.py を実行しているとします。 sample1.py 中から、同じく /A の中にあるファイル file_a1.txt を相対パスで参照する場合は、 file_a1.txt とファイル名のみか、 ./file_a1.txt とカレントディレクトリーを表す ./ をファイル名の前につけます。

../_images/path_002.png

カレントディレクトリーを /C/D として、 /C/D/sample2.py の場合を考えます。 /C/E/file_e1.txt を利用するには ../E/file_e1.txt と記述します。

../_images/path_003.png

../ は一つ親のディレクトリーを意味しています。../E はディレクトリー D の一つ親のディレクトリー C の下のディレクトリー E を表します。

どちらを使うか

プログラムを含むファイルをディレクトリー構成のままいろいろなサーバーにコピーして使う場合は、プログラムの中では相対パスを利用します。絶対パスで指定すると移動するたびに修正する必要があるので、相対パスでよければ相対パスで指定します。

Webアプリケーションの場合は、基本となるディレクトリーまでの絶対パスを設定ファイルに記述しておき、その絶対パスを変数に代入されるように設定しておきます。 利用時は [基本ディレクトリーまでの絶対パスが代入された変数] + [基本ディレクトリーからのパス] のように書きファイルのパスを指定します。