问题描述
我有一个csv文件,大小不适合我的计算机内存。所以我想打开csv文件,然后一次读取一行。我基本上想制作一个可以从csv生成单行的python生成器。
提前谢谢! :)
解决方法
with open(filename,"r") as file:
for line in file:
doanything()
Python尽可能懒惰。文件对象是生成器,不会加载整个文件,而是一次仅加载一行。
,我个人倾向于csv.DictReader
您将其设置为带有指针/参数的对象,然后一次访问文件一行,只需使用next
对其进行迭代,然后它会返回一个包含命名字段键的字典, CSV文件中的值对。
例如
import csv
csvfile = open('names.csv')
my_reader = csv.DictReader(csvfile)
first_row = next(my_reader)
for row in my_reader:
print ( [(k,v) for k,v in row.items() ] )
csvfile.close()
有关参数用法等信息,请参见链接的文档-相当简单。
, 解决方案:
您可以使用pandas read_csv函数中可用的chunksize
参数
chunksize = 10 ** 6
for chunk in pd.read_csv(filename,chunksize=chunksize):
print(type(chunk))
# CODE HERE
将chunksize
设置为1,它应该处理您的问题陈述。
python生成器,可从csv中生成单行。
这听起来像您想从内置csv
模块中获得csv.reader。您将为文件中的每一行得到一个列表。