コース一覧
    Pythonエラー・データ形式
    pathlibでパス操作

    Pythonエラー・データ形式

    例外処理とデータ形式を深め、異なる入力を検証し変換する処理を設計できるようにします。

    1
    エラー処理の設計
    01. 例外の階層15分
    02. raiseで例外を投げる15分
    03. カスタム例外15分
    04. finallyとelse15分
    05. assertで前提を守る15分
    06. つくる 入力検証の例外設計20分
    07. 第5章クイズ10分
    2
    ファイルとデータ形式
    01. csvモジュール15分
    02. JSONで保存15分
    03. JSONを読み込む15分
    04. pathlibでパス操作15分
    05. 文字コード15分
    06. つくる JSON保存へ移行20分
    07. 第6章クイズ10分

    pathlibでパス操作

    このレッスンでできるようになること。pathlib の Path を使って、家計簿の保存先を安全に組み立てられるようになります。

    ここまではファイル名を "kakeibo.json" のように直接書いてきました。保存先をフォルダで分けたくなると、"kakeibo/" + name + ".json" のような文字列の足し算が始まります。この書き方は、スラッシュを2つ重ねたり付け忘れたり、Windows の区切り文字と食い違ったりと、地味に事故が起きます。

    標準ライブラリの pathlib は、パスを文字列ではなく Path というオブジェクトで扱います。特徴は、区切り文字がスラッシュ演算子になることです。

    Python

    from pathlib import Path
    
    base = Path("kakeibo_data")
    path = base / "2026-08.csv"
    print(path)

    base / "2026-08.csv" は割り算ではなく、パスの連結です。区切り文字はその環境に合ったものが自動で入るので、付け忘れも重複もありません。

    Path には、名前を分解して取り出す属性がそろっています。name はファイル名そのもの、stem は拡張子を除いた部分、suffix は拡張子、parent は1つ上のフォルダです。ファイル名から月を取り出したいときは path.stem で済みます。

    フォルダを作るのは mkdir です。すでにあるときにエラーにしたくないので、base.mkdir(exist_ok=True) と書くのが定番です。途中のフォルダごと作るなら parents=True も足します。存在の確認は path.exists()、ファイルかどうかは path.is_file() です。

    読み書きも Path から直接できます。path.write_text(text, encoding="utf-8") と path.read_text(encoding="utf-8") は、open と with を書かずに1行で済ませたいときに便利です。encoding は open のときと同じく必ず指定します。

    フォルダの中身を一覧するには base.glob("*.csv") を使います。家計簿のファイルを月ごとに分けて置いておき、あとからまとめて集計するときに効いてきます。

    要件

    1. base = Path("kakeibo_files") を作り、exist_ok=True 付きで mkdir する
    2. path = base / "2026-08.csv" のようにスラッシュ演算子で組み立てる
    3. path.write_text で "ノート,200\nコーヒー豆,980\n" を encoding="utf-8" 付きで書く
    4. path、続けて name と stem と suffix を空白区切り、続けて parent、続けて exists() を表示する
    5. 最後に read_text で読んだ中身を splitlines で1行ずつ表示する

    ヒント

    mkdir に exist_ok=True を付けないと、2回目の実行でエラーになります

    print(path) はそのままパス文字列として表示されます

    read_text にも encoding="utf-8" が要ります

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/07

    関連レッスン

    • 文字コード

      encoding を明示して、日本語のデータを安全に保存します。

    • つくる JSON保存へ移行

      CSV から JSON へデータを移す処理を書きます。

    • 第6章クイズ

      ファイルとデータ形式の理解を確認します。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • 標準ライブラリPythonに同梱の公式モジュール群
    • オブジェクトキーと値のペアで構造を作るデータ
    • 演算子//は切り捨て除算(7 // 2 = 3)。
    • 属性インスタンス属性=各インスタンス固有の値(self.name)。
    main.py
    エディタを読み込んでいます

    メモ

    pathlibでパス操作

    ⌘S で保存