CSV模块Python

时间:2014-08-09 11:09:18

标签: python csv

我有一个大型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文件的唯一方法

1 个答案:

答案 0 :(得分:2)

不,csv模块生成迭代器;行按需生成。除非您在其他地方保留对row的引用,否则文件将完整地加载到内存中。

请注意,这正是我在你链接到的另一个答案中所说的;问题是OP正在构建一个列表(data),在读取后保存所有行,而不是在读取行时处理它们。