此问题与此问题有关: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
答案 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
如果在任何时候出现异常,包括在打开后面的文件期间,此结构将保证关闭所有打开的文件。