前回は、テキストファイルからの読み込みをやってみた。
今回はファイルにテキスト書き込みをやってみる。
ファイルをオープンするのに使うのは、読み込みと同じopen()メソッド。第二引数で指定するモードで読み込み、書き込みを指定する。
読み込みの時は’r',書き込みの時は’w'を指定する。例えば以下のような感じ。
fp = open('test.txt','w')
これで、test.txtが書き込みようにオープンされる。実際に書き込んでみる。
fp = open('test.txt','w')
これで一旦クローズしてみる。
fp.close()
ファイルの内容を確認すると以下の通り。
This is a test.
ここで、この書き込まれた内容には改行コードが含まれていないことに注意。改行コードは必要なら自分で加える。
fp.write('This is a test.\n')
こうすると改行コードも書き込まれる。
This is a test.
とは言ってもウェブ上だと同じにしか見えないかもしれない。テキストエディタで開くと確かに改行コードは書き込まれている。
もう一つ重要な注意点があって、ファイルのオープン時に、’w'を指定した場合、ファイルは書き込み用でオープンされるが、その時、同名のファイルがすでに存在した場合、内容が上書きされる。
そうすると元々そのファイルに書き込まれていた内容は消えてなくなってしまうので、プログラム作成時に十分な注意が必要。
これだとファイルの更新がやりづらいので、モードに’a'を指定して開く。
fp = open('test.txt','w')
fp.write('This is a test.\n')
fp.close()
fp = open('test.txt','a')
fp.write('Additional Texts\n')
fp.close()
このコードを実行するとファイルの内容は次のようになる。
This is a test.
Additional Texts
きちんとファイルに追記されているのが分かる。
もう一つが、writelines()メソッド。複数行を一気に書き込むメソッド。引数には、文字列を要素とするシーケンスを引き渡す。
まず、文字列を要素とするリストを作成する。
str = ['Line 1\n', 'Line 2\n', 'Line 3\n']
これをファイルオブジェクトのwritelines()で書き込む。
fp = open('test.txt','w')
fp.writelines(str)
fp.close()
これでファイルは以下の内容が書き込まれる。
Line 1
Line 2
Line 3
ここでも注意する点は、改行コード。改行コードは自動では書き込まれない。例えば以下のコードを書いてみる。今回はシーケンス型としてリストではなくてタプルをつかってみる。
str = ('Line 1','Line 2','Line 3')
fp = open('test.txt','w')
fp.writelines(str)
fp.close()
これを実行すると、ファイルの内容は以下の通りになる。
Line 1Line 2Line 3
改行コードが入っていないので全部1行に書き込まれてしまっている。改行コードを最後に追加しないとこうなってしまうので注意。
というわけで、テキストファイルへの書き込みは以上。次回はバイナリファイルの読み書きをやってみようと思う。
トラックバックURL
コメントをどうぞ



