同时在两个不同的位置读取一个文件?

时间:2016-02-15 13:28:22

标签: python-2.7 io

我有一个很长的文件,我需要一次处理两个不同的行来读它。例如,我想做这样的事情:

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到达文件末尾时,两个循环结束,就好像它只跟踪文件中的单个位置而不是两个。我怎么能做我想做的事?

1 个答案:

答案 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)