C
Python/ファイル/Lesson 24

pathlib — モダンなファイルパス (PEP 428)

15分·theory
このチャプター
2/2

pathlib — モダンなファイルパス (PEP 428)

🎯 このlessonを読み終えると

このlessonを最後まで読むと、以下の3つを自信を持って実践できるようになります。

  • ✅ pathlib.Path が os.path のモダンな代替
  • ✅ with open() コンテキストマネージャ + エンコーディングの明示
  • ✅ csv · json · yaml 標準モジュールの使い方

学習目標をチェックリストとして手元に置き、すべて答えられるようになったらlessonを閉じてください。

pathlib — コード + 実行結果

pathlib.Path = OS非依存のパス処理。Python 3.6+ 標準。os.path は旧来の方法。


1. パスの作成

python
from pathlib import Path

p = Path("data") / "user.json"
print(p)             # data\user.json (Win) or data/user.json (Mac)
print(type(p))       # <class 'pathlib.WindowsPath'> または PosixPath

/ 演算子でパスを結合 — OS ごとの区切り文字は自動で処理されます。


2. 情報の取得

python
p = Path("/home/user/photo.jpg")

print(p.name)        # photo.jpg
print(p.stem)        # photo
print(p.suffix)      # .jpg
print(p.parent)      # /home/user
print(p.parts)       # ('/', 'home', 'user', 'photo.jpg')

3. ファイル操作

python
p = Path("memo.txt")

# 存在確認
if p.exists():
    print("存在します")

# 1行で書き込み・読み込み
p.write_text("こんにちは!", encoding="utf-8")
内容 = p.read_text(encoding="utf-8")

# 情報
print(p.is_file())       # True
print(p.is_dir())        # False
print(p.stat().st_size)  # ファイルサイズ (バイト)

4. ディレクトリ操作

python
# フォルダの作成
Path("data").mkdir(exist_ok=True)

# フォルダ内の全ファイル
for ファイル in Path("data").iterdir():
    print(ファイル)

# パターンマッチング (glob)
for img in Path("photos").glob("*.jpg"):
    print(img)

# 再帰 — サブフォルダも含めて
for py in Path(".").rglob("*.py"):
    print(py)

5. os.path との比較

python
# ❌ 旧来の方法 (os.path)
import os
パス = os.path.join("data", "subdir", "file.txt")
拡張子 = os.path.splitext(パス)[1]
os.makedirs("data/subdir", exist_ok=True)

# ✅ pathlib
パス = Path("data") / "subdir" / "file.txt"
拡張子 = パス.suffix
Path("data/subdir").mkdir(parents=True, exist_ok=True)

一言まとめ

Path(...) / "..." + .read_text() + .glob() の3つで90%をカバーできます。os.path から卒業しましょう。

🐍 試してみよう — pathlib — 直接実行

上記の概念を実際にコードとして実行してみましょう。値を変えながら動作を直接確かめるのが、最も速い学習方法です。
✏️ Python 코드
📟 コンソール出力
▶ 実行ボタンを押してください
🐍 Pyodideで実際のPythonを実行 — 初回は読み込みに3〜5秒

🤖 AIへのリクエスト例

このlessonの概念を理解すれば、AIに具体的な指示を出せるようになります。漠然とした「直して」ではなく、語彙を持ったリクエスト — それがトークン節約の第一歩です。

  • 「この os.path コードを pathlib に移行して」
  • 「この with open ブロックに適切なエンコーディング (encoding='utf-8') を明示して」

なぜトークンが減るのか

概念を知らないと、AIの回答を受け取っても 「それは何ですか?」 と再度質問しなければなりません。その「再質問」がトークンを消費します。概念を一度学んでおけば、会話が一度で完結します

先に読むとよい概念: ファイルI/O
次のおすすめ: FastAPI入門
pathlib — モダンなファイルパス (PEP 428) - Python