Pythonによるリストのファイルへの書き込み

writelines()`は改行文字を挿入しないので、リストをファイルに書き込むにはこの方法が一番きれいですか?

file.writelines(["%s\n" % item  for item in list])

標準的な方法があるように思えるのですが...。

ソリューション

ループを使うことができます。

with open('your_file.txt', 'w') as f:
    for item in my_list:
        f.write("%s\n" % item)

また、Python 2では

with open('your_file.txt', 'w') as f:
    for item in my_list:
        print >> f, item

1回の関数呼び出しにこだわるのであれば,少なくとも角括弧 [] を削除して,出力される文字列が1つずつ作成されるようにしてください(リストコンプではなくゲンエクス) -- 文字列のリスト全体を作成するのに必要なメモリをすべて占有する必要はありません。

解説 (6)

そのファイルで何をしようとしているのか?このファイルは、人間や、相互運用性が明確に求められる他のプログラムのために存在するのでしょうか?

もし、同じpythonアプリで後で使えるようにリストをディスクにシリアル化しようとしているだけなら、リストを[pickleing][1]するべきです。

import pickle

with open('outfile', 'wb') as fp:
    pickle.dump(itemlist, fp)

それを読み返すには

with open ('outfile', 'rb') as fp:
    itemlist = pickle.load(fp)

[1]: http://docs.python.org/library/pickle.html

解説 (7)

もっとシンプルな方法は

``lang-python outfile.write("̫⃝".join(itemlist))


ジェネレータ式を使って、アイテムリストのすべてのアイテムが文字列であることを保証することができます。

``lang-python
outfile.write("\n".join(str(item) for item in itemlist))

すべての itemlist リストはメモリ上に存在する必要があるので、メモリの消費量に注意してください。

解説 (10)