Python で文字列やリストをファイルに書き込む
2023.02.18
今回は Python で文字列やリストをファイルに書きこむプログラムを考えます。文字列をファイルに書きこむときは、with でファイルを開いて write 関数を使います。
c = 'apple'
with open('test.txt', 'w') as f:
f.write(c)
# test.txtの中身
# apple
write の 1 番目の引数にファイル名を入れ、2 番目の引数にファイルを開くときのモードを指定します。書きこみは w または a です。
w 上書き
a 追記
リストの書きこみ
writelines というもっともらしい名前の関数があります。まずはこれを使って書きこんでみましょう。
c = ['apple', 'apple', 'apple', 'lemon', 'peach']
with open('test.txt', 'w') as f:
f.writelines(c)
# test.txtの中身
# appleappleapplelemonpeach
改行されないでリストの要素が次々に書きこまれています。要素ごとに改行したいときはどうすればいいでしょうか?
c = ['apple', 'apple', 'apple', 'lemon', 'peach']
with open('test.txt', 'w') as f:
for d in c:
f.write("%s\n" % d)
# test.txtの中身
# apple
# apple
# apple
# lemon
# peach
#
ループでリストの要素を1個ずつ取りだし、write でファイルに書きこんでいます。この場合は最後に改行がつきます。ループの中で要素を書きこむという方法の他に、次のようにリストをあらかじめ改行コードで結合し、できた文字列を一度に書きこむという方法もあります。
c = ['apple', 'apple', 'apple', 'lemon', 'peach']
d = "\n".join(c)
with open('test.txt', 'w') as f:
f.write(d)
# test.txtの中身
# apple
# apple
# apple
# lemon
# peach
文字列のメソッドである join でリストを結合しています。リストのメソッドではなく、文字列のメソッドであるため、改行コードにドット記号がついて、join にリストを入れています。
join で結合すると改行コードは要素と要素の間に入るため、最後の要素である peach の後に改行はつきません。