【发布时间】:2016-06-27 22:45:28
【问题描述】:
我有一个包含数百万行的 csv 文件。我想从 10,000,000 行开始迭代。目前我有代码:
with open(csv_file, encoding='UTF-8') as f:
r = csv.reader(f)
for row_number, row in enumerate(r):
if row_number < 10000000:
continue
else:
process_row(row)
这可行,但是需要几秒钟才能运行感兴趣的行。大概所有不需要的行都不必要地加载到 python 中,减慢了它的速度。有没有办法在某一行开始迭代过程 - 即没有开始读入的数据。
【问题讨论】:
-
有什么理由不能使用
tail跳过前 N 行并将其通过管道传输到您的 python 脚本? -
旁注:您想将
newline=''传递给open调用;csv模块希望您将换行插值留给它,您不希望open执行换行符。
标签: python python-3.x csv