Python 3.x ExitStack的push()和callback()方法的正确用例是什么?

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

我已经阅读了关于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 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()方法的正确用法吗?