環境設定 数値 文字列 正規表現 リスト タプル 集合 辞書 ループ 関数 クラス データクラス 時間 パス ファイル スクレイピング その他

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 の後に改行はつきません。