使用with打开多个不同模式的多个文件集

时间:2013-05-30 10:53:18

标签: python file-io python-3.x

此问题与此问题有关:How can I open multiple files using "with open" in Python?

我可以有三组文件: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模块,但我不确定,我怎么会以最恐怖的方式做到这一点。

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

1 个答案:

答案 0 :(得分:2)

我认为您链接的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

如果在任何时候出现异常,包括在打开后面的文件期间,此结构将保证关闭所有打开的文件。