CHAPTER 7 · 5 lessons · 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回の実行の中で、書いて読み直すところまでをやるよ。
この章のレッスン
読む