Pythonでファイルのパスを扱う
- 2020-09-22
- python
実行ファイルのパスを取得するには__file__
を使う。ただしこれはカレントワーキングディレクトリからの相対パスが返ってくる。
print(__file__)
ファイルパスの操作にはpathlib
モジュールを使う。
基本の使い方はこう。Path()
のパラメータを指定しない場合は.
が返ってくる。
from pathlib import Path
path = Path() # カレントワーキングディレクトリの相対パスが保存されたPathオブジェクトが作られる。
print(path)
>>> .
Path()で取得した相対パスを絶対パスに変換したいときは、Path.resolve()
を使用する。
from pathlib import Path
path = Path()
abspath = path.resolve()
print(abspath)
また、Path.parent
は1階層上のパスを返す。たとえば、実行ファイルと同じ階層に別のファイルを保存したいときなどに使える。
実行ファイルのパスからそのディレクトリの絶対パスを取得したいときには次のようにする。
path = Path()
abspath = path.parent.resolve()
ホームディレクトリの絶対パスを返すにはhome()
メソッドを使って次のようにする。
path = Path()
home = path.home()
print(home)
カレントワーキングディレクトリはcwd()
メソッド。
path = Path()
cwd = path.cwd()
print(cwd)
実行ファイルと同階層にデータファイルを保存したいときなど、絶対パスでパスを作成するときは、ディレクトリを「/」で区切って並べればよい。
次の例では実行ファイルと同階層にnew_file.txt
を(作る)つもりでパスを作成している(前のPath.parent
も参照)。この処理の段階でそこに実際のファイルやフォルダがあってもなくてもOK。
path = Path()
dir = path.parent
abspath = dir.resolve()
new_file = abspath / 'new_file.txt'
print(new_file)
ファイルを作成するにはnew_file
のファイルをopenすればよい。たとえばこんな感じ。
new_file = abspath / 'new_file.txt'
# ファイルを作成または開く
downloaded = open(new_file, 'w')
Pathlibでつくったパスを文字列に返すには次のようにする。ほかのメソッドのパラメータとしてパスを渡す必要があるときなどに ex.) Seleniumのsave_screenshot()など。
str(Path)