如何在 python 中打开一个 csv 文件并一次读取一行,而不将整个 csv 文件加载到内存中?

How can I open a csv file in python, and read one line at a time, without loading the whole csv file in memory?

我有一个 csv 文件,其大小不适合我的机器内存。所以我想打开 csv 文件,然后一次读取它的行。我基本上想制作一个 python 生成器,从 csv 中生成单行。

提前致谢! :)

解法:
您可以使用 pandas read_csv 函数

中可用的 chunksize 参数
chunksize = 10 ** 6
for chunk in pd.read_csv(filename, chunksize=chunksize):
    print(type(chunk))
    # CODE HERE

chunksize 设置为 1,它应该会处理您的问题陈述。

with open(filename, "r") as file:
    for line in file:
        doanything()

Python 尽可能偷懒。文件对象是生成器,不会加载整个文件,而是一次只加载一行。

我个人更喜欢 csv.DictReader

您将它设置为一个对象,使用 pointers/parameters,然后一次访问文件一行,您只需使用 next 和它 returns 遍历它包含 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 生成单行的生成器。

这听起来像是您想要 built-in csv 模块中的 csv.reader。您将获得文件中每一行的一个列表。