我经常使用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
如此强大的原因的一部分。
那么,是否可以将izip
与with
一起使用?
答案 0 :(得分:1)
当你看到它有多明显时,你会踢自己:
with open(fname1) as f1, open(fname2) as f2:
for line1, line2 in izip(f1, f2):
...