コース一覧
    Pythonファイル・エラー・制作
    ファイルを読み込む

    Pythonファイル・エラー・制作

    ファイル操作と例外処理を学び、入出力を含む小さなPython制作を安全に進められるようにします。

    1
    ファイルとエラー処理
    01. ファイルを読み込む15分
    02. ファイルに書き込む15分
    03. withで安全に扱う15分
    04. CSV形式で保存15分
    05. try-exceptで備える15分
    06. 例外の種類15分
    07. つくる:保存機能15分
    08. 第8章クイズ10分
    2
    総合制作
    01. 全機能を統合しよう15分
    02. 月間レポート機能15分
    03. 自由拡張15分
    04. 完成と次のステップ10分

    ファイルを読み込む

    open で読む

    終了した瞬間に、記録が全部消える

    ここまでのおこづかい帳は、閉じると記録がすべて消えていました。変数もリストも辞書も、メモリの上にしかないからです。次に開いたときも同じ記録を見るには、内容を ファイル に残すしかありません。

    読み込みは open から始めます。第 1 引数がファイルのパス、第 2 引数がモードで、読み込みは "r" です。

    Python

    with open("kakeibo.txt", "r", encoding="utf-8") as f:
        text = f.read()

    with open(...) as f と書き、そのブロックの中でファイルを使います。f はファイルを操作するための取っ手で、read を呼ぶと中身が丸ごと返ってきます。ブロックを抜けるとファイルは自動で閉じられます。

    encoding="utf-8" は文字コードの指定です。日本語を含むファイルでこれを付けないと、環境によって文字化けしたりエラーになったりします。付ける癖を付けておくと事故が減ります。

    返ってきたのは、1 本の長い文字列だった

    read が返すのは行のリストではありません。改行 \n を含んだ 1 本の文字列です。3 行書いてあれば、改行が 2 つ入った 1 つの str が返ります。

    行ごとに扱いたいなら、こちらで分けます。使うのは splitlines です。

    Python

    text = "りんご,120,食費\nみかん,80,食費"
    print(text.splitlines())

    ['りんご,120,食費', 'みかん,80,食費'] になります。

    split("\n") でもほぼ同じことができますが、末尾の扱いが違います。

    Python

    print("パン\n牛乳\n".split("\n"))
    print("パン\n牛乳\n".splitlines())

    ['パン', '牛乳', ''] と ['パン', '牛乳'] です。ファイルの最後に改行が 1 つ入っているのはよくあることで、split だと空文字が 1 つ増えます。この空文字はその場ではエラーにならず、集計の段になって「品名が空の支出」として表面化します。取り込む入口で形をそろえておくのが一番安上がりです。

    中身が空文字のときは、splitlines の結果も空リスト [] です。「まだ 1 件も記録がない」状態が、場合分けなしで表せます。

    やってみよう

    関数 read_lines(path, text) を実装してください。まず path に text を書き出し、そのうえで同じファイルを読み込み、splitlines で行のリストにして返します。

    学習環境にはあらかじめファイルを置けないため、中身も引数で受け取って自分で用意する形にしています。書き込みも同じ with open(...) の形で、モードの文字を "w" にして f.write(text) を呼びます。open には読み書きとも encoding="utf-8" を指定してください。text が空文字のときは空リスト [] が返れば正解です。

    print で確かめて満足するのもよくある落とし穴です。採点は戻り値だけを見るので、必ず return で返してください。

    要件

    1. 関数名は read_lines で、引数は path と text の 2 つ
    2. 先に path を書き込みモードで開き、text をそのまま書き出す
    3. 同じ path を読み込みモードで開き、read で中身を取得する
    4. splitlines で行のリストにして return する
    5. open には encoding="utf-8" を指定する

    ヒント

    書き込みは open(path, "w", encoding="utf-8") で開いて write を呼びます

    読み込みは open(path, "r", encoding="utf-8") で開いて read を呼びます

    開いたファイルは close で閉じます

    read の戻り値に splitlines を使うと、末尾の改行で空要素が増えません

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

    関連レッスン

    • ファイルに書き込む

      open の書きモードと write で行のリストをファイルに保存し、読み戻して確かめる

    • withで安全に扱う

      with 文でファイルの閉じ忘れを防ぎ、書き出しと読み戻しを安全に行う

    • CSV形式で保存

      join と split で辞書のリストを「品名,金額,カテゴリ」の行に変換する

    • try-exceptで備える

      try と except で ValueError を受け止め、変換に失敗しても止まらない関数を書く

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

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

    • 変数データに名前をつけて参照する仕組み
    • リスト順序付きで複数の値を扱うデータ構造
    • メモリプログラムとデータを一時保持する高速領域
    • 引数位置引数=順番で渡す。
    • ロック「他の人触らないでね」と DB に予約する
    • 文字コード文字に番号を割り当てるルール体系
    • 文字化け送受信側のエンコード不一致による表示崩れ
    • 関数処理に名前を付けて再利用できる単位
    main.py
    エディタを読み込んでいます

    メモ

    ファイルを読み込む

    ⌘S で保存