Pythonスクリプトの中でファイルを読み書きする際、ファイルパスを相対パス(data.txt など)で指定すると、それは「カレントディレクトリ(現在の作業ディレクトリ)」を基準に探されます。
そのため、プログラムが現在どこのディレクトリで実行されているかを知ったり、作業場所を移動したりする操作は、ファイル操作の基本となります。
この記事では、標準ライブラリ os モジュールを使用したカレントディレクトリの取得と変更方法について解説します。
1. カレントディレクトリの取得: os.getcwd()
現在の作業ディレクトリを取得するには、os.getcwd() 関数を使用します。(CWDは Current Working Directory の略です)
構文:
import os
current_path = os.getcwd()
具体的な使用例
スクリプトを実行した時点での場所を表示してみます。
import os
# 現在のディレクトリを取得して表示
path = os.getcwd()
print(f"現在のディレクトリ: {path}")
実行結果(例):
現在のディレクトリ: /Users/username/projects/python-app
(Windowsの場合は C:\Users\username\projects\python-app のようになります)
2. カレントディレクトリの変更: os.chdir()
作業ディレクトリを別の場所に移動するには、os.chdir() 関数を使用します。(CHDIRは Change Directory の略です)
引数には、移動先のパス(絶対パスまたは相対パス)を文字列で指定します。
構文:
import os
os.chdir("移動したいパス")
具体的な使用例
親ディレクトリ(一つ上の階層)に移動し、場所が変わったことを確認するプログラムです。
import os
print(f"移動前: {os.getcwd()}")
# 親ディレクトリ ".." に移動
# 実際に存在するフォルダ名(例: "data_folder")を指定してもOK
try:
os.chdir("..")
print("ディレクトリを移動しました。")
except FileNotFoundError:
print("指定されたディレクトリが見つかりません。")
print(f"移動後: {os.getcwd()}")
実行結果(例):
移動前: /Users/username/projects/python-app
ディレクトリを移動しました。
移動後: /Users/username/projects
パス指定時の注意点(Windowsユーザー向け)
Windowsのパス区切り文字であるバックスラッシュ(\)は、Pythonの文字列ではエスケープシーケンスとして扱われます。 そのため、パスを指定する際は以下のいずれかの方法で記述することを推奨します。
- Raw文字列を使う(推奨): 先頭に
rを付けると、\をそのまま文字として扱えます。Pythonos.chdir(r"C:\Users\Name\Documents") - スラッシュを使う: PythonはWindows環境でもスラッシュ
/をパス区切りとして認識します。Pythonos.chdir("C:/Users/Name/Documents") - ダブルバックスラッシュを使う:
\\と重ねてエスケープします。Pythonos.chdir("C:\\Users\\Name\\Documents")
まとめ
os.getcwd(): 現在のカレントディレクトリを文字列で取得します。os.chdir(path): カレントディレクトリを指定したパスに変更します。- ファイル操作を行う際、意図しない場所のファイルを読み書きしないよう、これらを使って作業場所を管理することが重要です。
