我必须访问 CSV 文件中的第 N 行。
这是我所做的:
import csv
the_file = open('path', 'r')
reader = csv.reader(the_file)
N = input('What line do you need? > ')
i = 0
for row in reader:
if i == N:
print("This is the line.")
print(row)
break
i += 1
the_file.close()
…但这并不是最佳选择。精确编辑:如果文件很大,我不想遍历所有行,也不想将整个文件加载到内存中。
我确实希望存在类似 reader[N]
的东西,但我还没有找到它。
编辑答案:这一行(来自选择的答案)是我要找的:
next(itertools.islice(csv.reader(f), N, None)
原文由 Gabriel L‘Heureux 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用
enumerate
遍历列表,直到找到正确的行:您还可以使用专为此类场景设计的
itertools.islice
访问可迭代对象的特定片段而不将整个内容读入内存。它应该比遍历不需要的行更有效。但是,如果您的 CSV 文件很小,只需将整个内容读入一个列表,然后您就可以通过索引以正常方式访问它。这还有一个好处,您可以按随机顺序访问多个不同的行,而无需重置 csv 阅读器。