我有一个列表,列表需要写入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
等
或者,任何人都可以提供一些提示/提示,以便我可以创建自己的实现。
答案 0 :(得分:7)
有一个writerows
方法可以在迭代中添加所有行:
csv_file.writerows(the_list)
无论你做什么,总会有一个循环(在你的代码或Python库实现中)。没有办法绕过它,因为您需要查看列表中的每个项目,以便您可以将它们写入文件。
如果您担心单独将每行写入文件的性能:Python默认使用缓冲I / O,因此即使您在循环中逐个编写列表项,它们也不一定如此被写成文件。每当缓冲区填满时,它们将以块的形式写入,这将具有更好的性能。如果需要,您可以使用open
的buffering
参数显式控制缓冲区大小。
答案 1 :(得分:3)
答案 2 :(得分:0)
这些都是字符串的元组?只有40,000个?你试过这个吗?
with open('outputfile.csv','w') as csv_file:
csv_file.write('\n'.join(map(','.join, my_list)+'\n'))
你仍然在列表上进行迭代,但是使用map
进行迭代,这是在Python的C库中实现的。