使用python的'with'同时使用izip

时间:2016-05-28 22:25:31

标签: python-2.7 itertools with-statement

我经常使用python以下列方式同时读取两个或多个文件:

for line1, line2 in izip(open(file1),open(file2)):
    do something with line1 and line2

(使用itertools包中的izip,因为我正在阅读的文件非常庞大,我不想将整个文件加载到内存中)。

我最近在阅读文件时已经转换为使用with,这显然更好,因为如果您的程序崩溃,它将关闭所有打开的文件(至少这是我从这里和其他地方的讨论中理解的):

with open(filename) as fh:
    for line in fh:
        do something with line
但是,我似乎无法弄清楚如何将这两种方法结合起来。当在这种情况下尝试使用izip时,它会说'itertools.izip' object has no attribute '__exit__'我认为这是使用with如此强大的原因的一部分。

那么,是否可以将izipwith一起使用?

1 个答案:

答案 0 :(得分:1)

当你看到它有多明显时,你会踢自己:

with open(fname1) as f1, open(fname2) as f2:
    for line1, line2 in izip(f1, f2): 
        ...