コース一覧
    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 の書き込みモード

    write は改行を付けてくれない

    読めるようになったので、今度は書きます。おこづかい帳で言えば、閉じるときに記録を残す部分です。書き込みも open から始まり、変わるのはモードの文字だけです。読みが "r"、書きが "w" です。

    Python

    with open("kakeibo.txt", "w", encoding="utf-8") as f:
        f.write("りんご,120,食費")

    write はかっこの中の文字列をそのまま書き出します。print と似ていますが、決定的な違いが 1 つあります。print は行の終わりに自動で改行を付けますが、write は付けません。

    そのため write を 2 回呼んでも 2 行にはならず、りんご,120,食費みかん,80,食費 と横につながります。改行が要るなら自分で \n を書きます。

    行のリストを 1 本の文字列にまとめるのは、辞書の走査で使った join の仕事です。区切りを "\n" にすれば要素と要素のあいだにだけ改行が入り、末尾には付きません。for で 1 行ずつ書くと、最後の行だけ改行を付けないという面倒な場合分けが要ります。join のほうが素直です。

    write が受け取れるのは文字列だけです。リストを渡せば TypeError になり、f.write(120) のように数値を渡しても TypeError です。金額を書くときは str(120) で文字列にしてからにします。

    "w" は、開いた瞬間に中身を消す

    "w" は上書きのモードです。書く前から消えます。開いて何も書かずに閉じただけでも、元の記録は空になります。読むつもりで "r" と "w" を打ち間違えると起きる事故です。

    大事なファイルのパスを渡す前に、一度 /tmp の適当な名前で試すのが安全です。

    「書けたつもり」がいちばん危ない

    書き込みの怖いところは、失敗しても静かなことです。パスを打ち間違えても、意図しない場所にファイルができるだけで、エラーは出ません。

    そこでこの演習では、書いた直後に同じパスを読み戻し、その内容を戻り値にします。読み戻せたということは、確かに書けたということです。学習環境の都合でこの形にしていますが、実際の開発でも保存処理の確認は同じ考え方でやります。

    やってみよう

    関数 write_records(path, lines) を実装してください。lines は文字列のリストです。改行でつないで 1 本の文字列にしてから path に書き出し、同じファイルを読み戻して、その内容の文字列を return します。

    open には書きも読みも encoding="utf-8" を指定します。lines が空リストのときは空文字 "" が返れば正解です。末尾に余計な改行を足さないよう気をつけてください。

    要件

    1. 関数名は write_records で、引数は path と lines の 2 つ
    2. lines を "\n".join で 1 本の文字列にしてから書き出す
    3. path を書き込みモードで開き、write で書き出して close する
    4. 同じ path を読み込みモードで開き、read の結果を return する
    5. open には encoding="utf-8" を指定する

    ヒント

    書き込みモードは open(path, "w", encoding="utf-8") です

    write が受け取れるのは文字列だけなので、リストは先に join でつなぎます

    "\n".join は要素のあいだにだけ改行を挟むので、末尾には改行が付きません

    書いたあとに open(path, "r", encoding="utf-8") で開き直して read します

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

    関連レッスン

    • withで安全に扱う

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

    • CSV形式で保存

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

    • try-exceptで備える

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

    • 例外の種類

      FileNotFoundError を受け止めて、保存ファイルが無い初回起動でも落ちないようにする

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

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

    • リスト順序付きで複数の値を扱うデータ構造
    • 戻り値呼び出し元への返答を表す点線矢印
    • 処理計算や代入を表す長方形
    • 関数処理に名前を付けて再利用できる単位
    • 引数位置引数=順番で渡す。
    • JOIN複数テーブルをくっつけて 1 つの結果に並べる SQL
    main.py
    エディタを読み込んでいます

    メモ

    ファイルに書き込む

    ⌘S で保存