我有一个很长的文件,我需要一次处理两个不同的行来读它。例如,我想做这样的事情:
with open('test.txt', 'r') as f1, open('test.txt', 'r') as f2:
for l1 in f1:
for l2 in f2:
process(l1, l2)
其中process
是一些处理函数,而test.txt
是一个巨大的文件,所以我无法一次将它全部加载到内存中。
上面的代码不起作用。当l2
到达文件末尾时,两个循环结束,就好像它只跟踪文件中的单个位置而不是两个。我怎么能做我想做的事?
答案 0 :(得分:2)
f2
在内循环结束后,您必须使用f2.seek(0)
重置它。
试试这个:
with open('test.txt', 'r') as f1, open('test.txt', 'r') as f2:
for l1 in f1:
for l2 in f2:
process(l1, l2)
f2.seek(0)