我试图使用一个sys.argv语句从with输入中打开几个文件。
我知道我可以通过手动打印出每一个:
with open(sys.argv[1], 'r') as test1, open(sys.argv[2], 'r') as test2, \
open(sys.argv[3], 'r') as test3, open(sys.argv[4], 'r') as test4:
do_something()但是,是否有一种不这样做的方法,比如下面的伪代码:
with open(sys.argv[1:4], 'r') as test1, test2, test3:
do_something()发布于 2017-03-29 01:12:33
您可以在Python 3.3+ contextlib.ExitStack中这样做。
from contextlib import ExitStack
with ExitStack() as stack:
files = [stack.enter_context(open(arg, 'r')) for arg in sys.arv[1:4]]有趣的是,文档中的示例正是您想要的。
这将在退出with语句时正确关闭所有打开的文件--即使在它们全部打开之前发生了错误。
对于早期版本的python,有 package,您可以通过pip获得它。
https://stackoverflow.com/questions/43082533
复制相似问题