CHAPTER 7 · 5 lessons · 65問

ファイルを読み書きする

プログラムの外にデータを残す。実行が終わっても消えない値を扱えるようになる章。

0 / 65 問クリア

ここからが応用編。「プログラムが書ける」から「他人の Python が読める」へ進む6章の、その1本目だよ。

ここまで書いたプログラムには、共通の性質がひとつあった。実行が終わると、扱っていた値が全部消えるということだ。変数もリストも辞書も、プログラムが動いているあいだだけのもので、次に実行したときにはまっさらに戻っている。

それを超える最初の手段が ファイルだよ。プログラムの外に文字を書き出しておけば、実行が終わっても残る。次に実行したときに読み直せる。メモアプリも、家計簿も、ゲームのセーブデータも、根っこはこれだ。

Python でファイルを開くのは open という関数。開いたら必ず閉じる必要があって、閉じ忘れると書いた内容が中途半端にしか残らないことがある。そこで使うのが with という書き方だ。with open("memo.txt") as f: と書けば、その字下げのブロックを抜けるときにPython が勝手に閉じてくれる。閉じ忘れが構造的に起きなくなるので、実際のコードではほぼ必ずこの形で書かれるよ。

読み方は、1行ずつ読む形と、丸ごと読む形の2つを扱う。行ごとに処理したいなら for gyou in f: と書けばいい——ここで、第2章の for がファイルにもそのまま効くことに気づくはずだ。この「同じ書き方があちこちで効く」という感覚は、次の第8章で正体を明かすよ。

書くほうは open("memo.txt", "w") のようにモードを指定する。ここで注意がひとつあって、"w" はすでにある中身を消してから書く。追記したいときは "a" を使う。うっかり大事なファイルを空にしてしまう事故は、経験者でもやるやつだよ。

なお、この教材のファイル操作はブラウザの中に作った仮想のファイル置き場で行う。あなたの端末の本物のファイルには一切触れないので、安心して "w" を試していい。ただしその置き場は実行のたびに作り直されるので、「前回書いたファイルが次回も残っている」という体験だけはできない。1回の実行の中で、書いて読み直すところまでをやるよ。

この章のレッスン

読む

  1. 75ファイルを開いて読むopen で開いて、read で読んで、close で閉じる。実行が終わっても消えないものの話だよ。問題へ
  2. 76かならず閉じてもらうwith と書けば、字下げのブロックを抜けるときに Python が勝手に閉じてくれるよ。問題へ
  3. 771行ずつ読むfor gyou in f: でファイルが回せる。第2章の for が、そのままファイルにも効くよ。問題へ

書く

  1. 78ファイルに書き出す"w" は中身を消してから書く。知らずに使うと、大事なファイルが空になるよ。問題へ
  2. 79書いて、読み直す保存して、取り出す。メモアプリも家計簿もゲームのセーブデータも、根っこはこの往復だよ。問題へ

つぎは「イテラブルとイテレータ」。なぜリストにも文字列にもファイルにも同じ for が効くのか。Python の設計思想が見える章。