Python: リストの要素をファイルに書き込む writelines()

Pythonでリストの要素をまとめてファイルに書き込む方法を紹介します。 writelines()メソッドを使うとリストの内容を書き込めるのですが、 要素間に改行コードが無く1つの文字列となります。 要素間に改行コードを入れたい場合は一工夫する必要があります。

リストの要素を書き込む writelines()

リストの要素をファイルに書き込む場合は、 writelines()メソッドを使います。

書式
ファイル.writelines(シーケンス型オブジェクト)

writelines()メソッドの引数は、 リストやタプルなどのシーケンス型のオブジェクトです。

実際にリストの要素を書き込んでみます。

li = ["a", "b", "c"]

# ファイルパス
file_path = "a.txt"

with open(file_path, "w", encoding="utf-8") as f:
	f.writelines(li)

a.txtの中身は次のようになっています。

a.txt
abc
writelines()メソッドでは区切り文字が書きだされず、 要素の内容が1つの文字列として書き込まれます。

要素ごとに改行コードを入れて書き込む方法

要素ごとに改行コードを入れたい場合、 方法がいくつかあるので紹介します。

① map(), writelines()を使う方法

次のコードは map()関数を使って、 各要素の末尾に改行コードを付加したオブジェクトを作成し、 writelines()メソッドで書き込んでいます。

li = ["a", "b", "c"]

# ファイルパス
file_path = "a.txt"

# 各要素に改行コードを付加
obj = map(lambda x: x + "\n", li)

with open(file_path, "w", encoding="utf-8") as f:
	f.writelines(obj)

a.txtには改行コードが入っています。

a.txt
a
b
c

② join(), write()を使う方法

次のコードは、join()メソッドを使っています。 改行コードを結合文字として、配列の要素を結合し、 1つの文字列を作成しています。 最後に write()メソッドでファイルに書き込みます。

li = ["a", "b", "c"]

# ファイルパス
file_path = "a.txt"

# join()で要素内容を結合
s = "\n".join(li)

with open(file_path, "w", encoding="utf-8") as f:
	f.write(s)
a.txt
a
b
c

こちらの方がシンプルでわかりやすいかもしれません。 好きな方法を使って下さい。

Python