0

这个问题与这个问题有关:如何在 Python 中使用“with open”打开多个文件?

我可以拥有三组文件:files1、files2 和 file3

通过执行以下操作,我可以打开 files1 和 files2 进行读取,并打开 file3 进行写入:

with fileinput.input(files=files1) as f1, fileinput.input(files=files2) as f2, open(file3,'w') as f3:

在 Python 3(不是 Python 2)中,如果我有数百组文件,我怎么能做到这一点?

我查看了 contextlib 模块,但我不确定如何以最 Pythonic 的方式执行此操作。

http://docs.python.org/3/library/contextlib.html#contextlib.ExitStack

4

1 回答 1

3

我认为contextlib.ExitStack您链接到的课程正是您想要的:

with contextlib.ExitStack() as stack:
    inputs = [stack.enter_context(fileinput.input(files=filename))
              for filename in input_filenames]
    outputs = [stack.enter_context(open(filename, "w"))
               for filename in output_filenames]

    # do stuff with inputs and outputs here

如果在任何时候引发异常,包括在打开以后的文件期间,这种结构将保证所有打开的文件都将被关闭。

于 2013-05-30T11:13:02.080 回答