pathlibを使ったパス操作のまとめです。
Python 3.7.2
ファイル操作
ファイル操作まとめ。
#coding:utf-8 import pathlib # インスタンス化 file1 = pathlib.Path('Example/Example\example.txt') # セパレータは\でも/でも混ぜてもok # 存在してるか print(file1.exists()) # 新規作成 file1.touch() # 既に存在してもエラーにはならない file1.touch(exist_ok=False) # 存在していたらエラー # フォルダを作って新規生成 file1.parent.mkdir(parents=True, exist_ok=True) file1.touch() # ファイルを読み込む with file1.open() as f: print(f.read()) # ファイルを一行ずつ読み込む with file1.open() as f: print(f.readline()) print(f.readline()) print(f.readline()) # ファイルを読み込んで一行ずつのリストにしたものを取得(要素には改行コードが含まれる) with file1.open() as f: print(f.readlines()) # ファイルを上書き with file1.open(mode="w") as f: f.write("example\n2行目") # ファイルが無ければ新規作成 / フォルダが無いとエラー # リストをつなげて上書き with file1.open(mode="w") as f: f.writelines(["1行目\n", "2行目前半", "2行目後半"]) # ファイルが存在しないときだけ書き込む try: with file1.open(mode="x") as f: f.write("example") # ファイルが存在したらエラー except FileExistsError: pass # 追記モードで書き込む with file1.open(mode="a") as f: f.write("\nexample") # ファイルが無ければ新規作成 # openを書かなくても読み込めるメソッド file1.read_text() # ファイルが無ければエラー # openを書かなくても書き込めるメソッド file1.write_text("example") # ファイルが無ければ新規作成 / フォルダが無いとエラー # 削除 file1.unlink() # ファイルが無ければエラー
フォルダ操作
フォルダ操作まとめ。
#coding:utf-8 import pathlib # インスタンス化 folder1 = pathlib.Path('Example/Example2\Example3') # 末尾にセパレータがあってもok # フォルダか print(folder1.is_dir()) # 存在してるか print(folder1.exists()) # 新規作成 folder1.mkdir() # 未作成の中間フォルダがあったらエラー / 既に存在していたらエラー folder1.mkdir(parents=True, exist_ok=True) # 中間フォルダもまとめて作成 folder1.mkdir(exist_ok=True) # 存在していてもエラーにならない(フォルダの中身もそのまま) folder1.mkdir(parents=True, exist_ok=True) # 大体のケースではこれが使い勝手良さげ # 空フォルダを削除 #folder1.rmdir() # 中身があるとエラー / なかったらエラー # フォルダの中身ごと削除するにはshutilを使う import shutil shutil.rmtree(folder1) # 無かったらエラー # すべてのファイルを取得 for item in folder1.iterdir(): print(item) lst = list(folder1.iterdir()) # イテレータをリスト化 # 再帰的に(サブフォルダも含めて)すべてのファイルを取得 items = folder1.glob("**") # 全てのフォルダを再帰的に取得 items = folder1.glob("**/*") # 全てのファイルとフォルダを再帰的に取得 items = folder1.glob("**/*.txt") # 特定拡張子のファイルを再帰的に取得 for item in items: print(item)
Pathオブジェクトに対する操作
Pathオブジェクトに対する操作まとめ。
# 絶対パスに変換 fullpath = file1.resolve() # 相対パスに変換 path = path.relative_to(pathlib.Path.cwd()) # 文字列に変換 string = str(file1) # ファイル名(拡張子付き)/ フォルダ名のみ抽出 file.name # ファイル名(拡張子なし)/ フォルダ名のみ抽出 file.stem # 拡張子を取得 file.suffix # 親フォルダのパスを取得 file.parent # 同じフォルダの別のファイルを取得 file.with_name("other.txt") # 拡張子を変更 file.with_suffix(".png") # パスは/で結合する path = pathlib.Path('Example/Example2/') / pathlib.Path("example.txt") path = pathlib.Path('Example/Example2/') / "example.txt" # こんな感じでもできる