【发布时间】:2017-02-15 15:55:30
【问题描述】:
我目前正在读取一个大型 csv 文件(大约 1 亿行),使用的命令与https://docs.python.org/2/library/csv.html 中描述的行一致,例如:
import csv
with open('eggs.csv', 'rb') as csvfile:
spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
for row in spamreader:
process_row(row)
这证明相当慢,我怀疑是因为每一行都是单独读入的(需要对硬盘驱动器进行大量读取调用)。有什么方法可以一次读取整个 csv 文件,然后对其进行迭代?虽然文件本身很大(例如 5Gb),但我的机器有足够的内存来保存它。
【问题讨论】:
-
该代码不是一次读取文件一行。输入在适当大小的缓冲区中读取。
-
它很可能是因为 RAM 使用而变慢。解析后,一个 5GB 的文件可能需要超过 5GB 的 RAM。
-
是的 - 在我的机器崩溃之前,它很快就使用了 26gb 的内存!经验教训...