3

我已阅读有关 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()


4

0 回答 0