python中使用with打开多个文件

python中使用with打开多个文件

使用with打开文件的好处不多说,这里记录一下如果要打开多个文件,该怎么书写简捷的代码。

同时打开三个文件,文件行数一样,程序实现每个文件依次读取一行,同时输出。 首先来一种比较容易想到的写法,如下一样嵌套:

1
2
3
4
5
6
7
with open('file1') as f1:
with open('file2') as f2:
with open('file3') as f3:
for i in f1:
j = f2.readline()
k = f3.readline()
print(i,j,k)

简捷一点的写法如下:

1
2
3
4
5
with open('file1') as f1, open('file2') as f2, open('file3') as f3:
for i in f1:
j = f2.readline()
k = f3.readline()
print(i,j,k)

还有一种优雅一点的写法:
python 里面有contextlib库中有一个是nested,一个是closing,前者用于创建嵌套的上下文,后则用于帮你执行定义好的close函数。但是nested已经过时了,因为with已经可以通过多个上下文的直接嵌套了。

1
2
3
4
5
6
from contextlib import nested
with nested(open('file1'), open('file2'), open('file3')) as (f1,f2,f3):
for i in f1:
j = f2.readline()
k = f3.readline()
print(i,j,k)