我有一个大型CSV文件(大约一百万条记录)。我想处理将每条记录写入数据库。
由于将完整文件加载到RAM中没有任何意义,因此我需要以块(或任何其他更好的方式)读取文件。
所以,我写了这段代码。
import csv
with open ('/home/praful/Desktop/a.csv') as csvfile:
config_file = csv.reader(csvfile, delimiter = ',', quotechar = '|')
print config_file
for row in config_file:
print row
我猜它先将所有内容加载到内存中然后再处理。
在查看this线程和许多其他人之后,我没有看到o / p代码和解决方案有任何区别。请指教,它是有效处理csv文件的唯一方法
答案 0 :(得分:2)
不,csv
模块生成迭代器;行按需生成。除非您在其他地方保留对row
的引用,否则文件将不完整地加载到内存中。
请注意,这正是我在你链接到的另一个答案中所说的;问题是OP正在构建一个列表(data
),在读取后保存所有行,而不是在读取行时处理它们。