Python 3.x ExitStack的push()和callback()方法的正确用例是什么?
我已经阅读了关于ExitStack的Python文档,但我不理解如何将Python 3.x ExitStack的push()和callback()方法的正确用例是什么?,python-3.x,Python 3.x,我已经阅读了关于ExitStack的Python文档,但我不理解如何将push()和callback()应用到实际示例中 我尝试了Exitstack打开多个上下文管理器的基本示例,并了解了enter\u context()、pop\u all()和close()方法的实际工作 from contextlib import ExitStack path = './folder/' fileList = ['File1', 'File2', 'File3'] with ExitStack() as
push()
和callback()
应用到实际示例中
我尝试了Exitstack打开多个上下文管理器的基本示例,并了解了enter\u context()
、pop\u 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()
stack.callback(mergedFile.close)
<代码>回调需要一个。。。回调(函数)mergedFile.close
是一个函数,mergedFile.close()
什么都不是(就像Python中的大多数副作用函数一样),并且您过早地关闭了一个文件。但是,我在代码中没有看到任何push
,因此我无法对此发表评论。close()方法注册回调而不是关闭文件。退出with语句时,文件将关闭。使用close而不是close()是正确的。你能举个例子来说明push()方法的正确用法吗?