結論から言うと、pathlib はファイルやフォルダのパスを文字列ではなく、Path オブジェクトとして扱うための標準ライブラリです。
Pythonでファイルを扱う処理を書くと、フォルダ名とファイル名をつなげたり、存在確認をしたり、拡張子でファイルを探したりする場面がよくあります。
そのような処理を文字列だけで書くと、区切り文字や相対パスの扱いで読みにくくなることがあります。
この記事では、レポート用フォルダを作り、テキストファイルを保存して一覧表示する例を使って、pathlib の基本を整理します。
この記事でわかること
完成コード
完成コードは次の通りです。
from pathlib import Path
def save_report(base_dir: Path, file_name: str, lines: list[str]) -> Path:
report_dir = base_dir / "reports"
report_dir.mkdir(parents=True, exist_ok=True)
report_path = report_dir / file_name
report_path.write_text("\n".join(lines), encoding="utf-8")
return report_path
def list_text_files(folder: Path) -> list[Path]:
return sorted(folder.glob("*.txt"))
base_dir = Path("work")
saved_path = save_report(
base_dir,
"sales_report.txt",
["売上レポート", "合計: 12000円", "件数: 5件"],
)
print(f"保存しました: {saved_path}")
for path in list_text_files(base_dir / "reports"):
print(f"見つかったファイル: {path.name}")このコードを実行すると、work/reports/sales_report.txt が作成され、同じフォルダ内の .txt ファイル名が表示されます。
コードのポイント
このコードでは、Path を使ってフォルダとファイルのパスを組み立てています。
Path("work")で作業フォルダを表しています/演算子でフォルダ名やファイル名をつなげていますmkdir()でフォルダを作成していますwrite_text()でテキストファイルを書き込んでいますglob("*.txt")でテキストファイルを探しています
pathlib を使うと、ファイルパスを単なる文字列ではなく「パスとして操作できる値」として扱えます。
ファイル操作の見通しをよくしたいときに、最初に覚えておきたい標準ライブラリです。
コードを順番に説明します
主要な処理を分けて説明します。
1. Pathで作業フォルダを表します
from pathlib import Path
base_dir = Path("work")Path("work") は、work というフォルダのパスを表します。
この時点では、まだフォルダを作っているわけではありません。
あくまで「この場所を使います」というパスの値を作っています。
文字列で "work/reports" のように書くこともできますが、Path を使うと後からフォルダ名やファイル名をつなげやすくなります。
WindowsやmacOS、Linuxでパスの区切り文字が違うことも、通常は Path 側が扱ってくれます。
2. フォルダとファイル名をつなげます
report_dir = base_dir / "reports"
report_path = report_dir / file_namePath では、/ を使ってパスをつなげられます。base_dir / "reports" は、work フォルダの下にある reports フォルダを表します。
この書き方は、文字列の足し算よりも読みやすくなります。"work" + "/" + "reports" のような書き方では、区切り文字を自分で気にする必要がありますが、Path ならパスを組み立てていることがはっきりします。
3. フォルダを作ってファイルを書き込みます
report_dir.mkdir(parents=True, exist_ok=True)
report_path.write_text("\n".join(lines), encoding="utf-8")mkdir() はフォルダを作るメソッドです。parents=True を付けると、途中のフォルダがない場合もまとめて作れます。exist_ok=True を付けると、すでにフォルダがあってもエラーにしません。
write_text() は、テキストをファイルに書き込むメソッドです。
ここでは文字化けを避けるために、encoding="utf-8" を明示しています。
日本語を含むファイルでは、文字コードを明示しておくと環境差によるトラブルを減らせます。
4. 条件に合うファイルを探します
return sorted(folder.glob("*.txt"))glob("*.txt") は、指定したフォルダ内から .txt で終わるファイルを探します。
戻り値は Path の集まりなので、見つかったファイルに対して path.name や path.read_text() のような操作を続けられます。
ファイル名だけを表示したい場合は path.name を使います。
フォルダを含むパス全体を表示したい場合は、そのまま path を表示できます。
実務で使うときのポイント
実務では、pathlib はファイルを扱う自動化処理でよく使います。
たとえば、日次レポートを保存する、CSVを読み込む、出力フォルダを作る、ログファイルを探す、といった処理です。
パスを関数に渡すときは、最初から Path として扱うと処理が安定します。
文字列で受け取った場合も、関数の入口で Path(value) に変換しておくと、その後の処理を統一しやすくなります。
第3章で学んだファイル操作と組み合わせると、pathlib の便利さが分かりやすくなります。
第6章では、os や shutil も扱いますが、まずはパス操作の基本として pathlib に慣れておくと、後の標準ライブラリも読みやすくなります。