我已阅读有关 ExitStack 的 Python 文档,但我无法理解如何应用或使用push()实际callback()示例。
我已经尝试了 Exitstack 的基本示例来打开多个上下文管理器,并了解了实际工作enter_context()和方法。pop_all()close()
from contextlib import ExitStack
path = './folder/'
fileList = ['File1', 'File2', 'File3']
with ExitStack() as stack:
files = [stack.enter_context(open(path+file)) for file in fileList]
close_files = stack.pop_all().close
for f in files:
print(f.read())
close_files()
path = './folder/'
fileList = ['File1', 'File2', 'File3']
with ExitStack() as stack:
files = [stack.enter_context(open(path+file)) for file in fileList]
close_files = stack.pop_all().close
mergedFile = open(path+'mergedFile', 'w+')
stack.callback(mergedFile.close)
for f in files:
print(mergedFile.writelines(f.readlines()))
close_files()