簡體   English   中英

將列表寫入csv文件而不在python中循環

[英]Write a list to csv file without looping in python

我有一個列表列表,我需要寫入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
或者,任何人都可以提供一些提示/提示,以便我可以創建自己的實現。

有一個writerows方法,它將在iterable中添加所有行:

csv_file.writerows(the_list)

無論你做什么,總會有一個循環(在你的代碼或Python庫實現中)。 沒有辦法繞過它,因為您需要查看列表中的每個項目,以便您可以將它們寫入文件。

如果您擔心單獨將每行寫入文件的性能:默認情況下Python使用緩沖的I / O,因此即使您在循環中逐個編寫列表項,它們也不一定會像到文件。 每當緩沖區填滿時,它們將以塊的形式寫入,這將具有更好的性能。 如果需要,可以使用openbuffering參數顯式控制緩沖區大小。

簡單:

csv_file.writerows(mylist)

(注意在writerows()s

這些都是字符串的元組? 只有40,000個? 你試過這個嗎?

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

仍在迭代列表,但使用map ,這是在Python的C庫中實現的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM