with打开多个文件时,如果文件多,要么多层嵌套,要么一行写多个as,使用contextlib更优雅的打开多个文件
# Python2版本代码如下
from contextlib import nested
with nested(open(filename1), open(filename2), open(filename3)) as (fp1, fp2, fp3):
for l1 in fp1:
l2 = fp2.readline()
l3 = fp3.readline()
# do something
# Python3版本代码如下
from contextlib import ExitStack
with ExitStack() as stack:
files = [stack.enter_context(open(fname)) for fname in ["1.txt", "2.txt", "3.txt"]]
# eg.1
for i, j, k in zip(files[0], files[1], files[2]):
print(i, j, k)
# eg.2
for f in files:
print(f.read())
# 封装为一个工具类
虽然貌似没啥鸟用 2233
# 苦逼加班,等两天再更新,需要的可评论