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