4

csv ファイルに書き込む必要があるリストのリストがあります。

mylist = [['Siddharth','Bangalore','blah@gmail.com'],  
        ['Rahul','Bangalore','blah2@gmail.com'],.....and so on]  

このリストは通常​​、約 20,000 から 40,000 の長さです。
したがって、現在、それらを csv ファイルに書き込む唯一の方法は、リストを繰り返し処理して次のように記述することです。

fileObj = open("/home/siddharth/sample.csv", "wb")
csv_file = csv.writer(fileObj)  
for item in mylist:  
    csv_file.writerow(item)  

だから、私が知りたかったのは、リスト内の各項目を反復せずに、そのようなリストのリストをcsvに書き込む方法があるかどうかです. などの使用StringIOなど。
または、独自の実装を作成できるように、誰かがヒント/ヒントを与えることができます。

4

3 に答える 3

7

writerowsiterable にすべての行を追加するメソッドがあります。

csv_file.writerows(the_list)

何をするにしても、必ずどこかにループが存在します (コードまたは Python ライブラリの実装のいずれか)。ファイルに書き込むことができるように、リスト内の各項目を確認する必要があるため、これを回避する方法はありません。

各行を個別にファイルに書き込む際のパフォーマンスが心配な場合: Python はデフォルトでバッファリングされた I/O を使用するため、リスト項目を 1 つずつループで書き込んでも、必ずしも次のように書き込まれるとは限りません。それをファイルに。バッファがいっぱいになるたびにチャンクで書き込まれるため、パフォーマンスが向上します。必要に応じて、 のbufferingパラメーターを使用してバッファー サイズを明示的に制御できますopen

于 2012-12-27T12:42:53.233 に答える
3

簡単:

csv_file.writerows(mylist)

( に注意してsくださいwriterows())

于 2012-12-27T12:42:59.877 に答える
0

これらはすべて文字列のタプルですか? たったの4万人?これを試しましたか?

with open('outputfile.csv','w') as csv_file:
    csv_file.write('\n'.join(map(','.join, my_list)+'\n'))

リストを繰り返し処理していますが、Python の C ライブラリに実装されている を使用してますmap

于 2012-12-27T14:06:44.670 に答える