我有一个大小不适合我机器内存的csv文件。所以我想打开csv文件,然后一次读取一行。我基本上想制作一个python生成器,从csv中生成单行。
提前感谢!:(
with open(filename, "r") as file:
for line in file:
doanything()
Python在任何可能的情况下都是懒惰的。文件对象是生成器,不会加载整个文件,而是一次只加载一行。
解决方案:
您可以使用pandas read_csv函数中可用的chunksize
参数
chunksize = 10 ** 6
for chunk in pd.read_csv(filename, chunksize=chunksize):
print(type(chunk))
# CODE HERE
将chunksize
设置为1,它就会处理您的问题陈述。
我个人更喜欢使用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()
有关参数用法等,请参阅链接的文档——这相当简单。
python生成器,从csv中生成单行
这听起来像是您想要来自内置csv
模块的csv.reader。您将为文件中的每一行获得一个列表。