こんにちは。とりりんです。
今回は、Pythonのパス関連でよく使うものを紹介します。
os.pathやpathlib、globを使いこなしたいと思います。
こんなことが知りたい方向けです。
- ディレクトリ名だけ取り出したい!
- ファイル名だけ取り出したい!
- ファイルを自由に指定したい!
ディレクトリ・ファイル名関連 : os.path
os.pathモジュールでよく使うものたちを紹介します。
import osをお忘れなく。
現在地取得 : __file__
__file__で現在地を取得し、abspathと指定することで、絶対パスにします。
path = os.path.abspath(__file__) print(path) # /Users/toririn/Desktop/run.py
ディレクトリ名・ファイル名の分割 : os.path.split()
splitでディレクトリとファイル名をタプルに分割します。
path = os.path.split("/Users/toririn/Desktop/run.py") print(path[0]) # /Users/toririn/Desktop print(path[1]) # run.py
スポンサーリンク
ディレクトリ名のみ取得 : os.path.dirname()
splitでも良いのですが、dirnameでもディレクトリ名のみ取得できます。
dire = os.path.dirname("/Users/toririn/Desktop/run.py") print(dire) # /Users/toririn/Desktop
ファイル名のみ取得 : os.path.basename()
先ほどと同じくsplitでも良いのですが、basenameでもファイル名のみ取得できます。
fname = os.path.basename("/Users/toririn/Desktop/run.py") print(fname) # run.py
スポンサーリンク
絶対パスと相対パスの相互変換 : pathlib
パス関連で使用するpathlibモジュールでよく使うものたちを紹介します。
例では現在地がデスクトップであることを想定しています。
import pathlibをお忘れなく。
相対パスを絶対パスに変換 : resolve()
pathlib.Pathに変換したい相対パスを入れて、resolve()を使って変換します。
absPath = pathlib.Path("test/*.txt").resolve() print(absPath) # /Users/toririn/Desktop/test/*.txt
絶対パスを相対パスに変換 : relative_to()
pathlib.Pathに変換したい絶対パスを入れて、relative_to()を使って変換します。
relative_to()の中には相対的な基準となる場所を入れます。
os.getcwd()で現在地を指定できます。
absPath = "/Users/toririn/Desktop/test/*.txt" relPath = pathlib.Path(absPath).relative_to(os.getcwd()) print(relPath) # test/*.txt
スポンサーリンク
ディレクトリ内のファイルループ : glob
globでパターンに一致するファイルのリストを作成することができます。
しかし、globはリスト格納順がランダムなため、順番に並べるにはsortedを使用する必要があります。
今回は、testディレクトリに007以外の000~010.txt及び000~010.csvを格納しています(例ではcsvが一致しないため表示されません)。
from glob import globをお忘れなく。
import globだとソースのglob()をglob.glob()にしてください。
files = glob("test/*.txt") for file in files : print("File = %s" %file) # File = folder/003.txt # File = folder/002.txt # File = folder/000.txt # File = folder/001.txt # File = folder/005.txt # File = folder/004.txt # File = folder/010.txt # File = folder/006.txt # File = folder/009.txt # File = folder/008.txt
files = glob("test/*.txt") for file in sorted(files) : print("File = %s" %file) # File = folder/000.txt # File = folder/001.txt # File = folder/002.txt # File = folder/003.txt # File = folder/004.txt # File = folder/005.txt # File = folder/006.txt # File = folder/008.txt # File = folder/009.txt # File = folder/010.txt
まとめ
今回はPythonのファイルを扱う際によく使うものを紹介しました。
os, pathlib, globは色んな場面で出てくるので覚えておいて損はないと思います。
メモとして残しておくと便利ですね。
これからも勉強してパイソニスタを目指しましょう!
↓とりりんを応援して頂けると嬉しいです!↓
にほんブログ村
コメント