在使用 izip 同时读取两个文件时使用 python 的 'with'

using python's 'with' while reading two files simultaneously with izip

我经常使用 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 一起使用?

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

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