首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用with语句打开文件列表

使用with语句打开文件列表
EN

Stack Overflow用户
提问于 2017-03-29 01:07:05
回答 1查看 522关注 0票数 3

我试图使用一个sys.argv语句从with输入中打开几个文件。

我知道我可以通过手动打印出每一个:

代码语言:javascript
复制
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()

但是,是否有一种不这样做的方法,比如下面的伪代码:

代码语言:javascript
复制
with open(sys.argv[1:4], 'r') as test1, test2, test3:
    do_something()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-29 01:12:33

您可以在Python 3.3+ contextlib.ExitStack中这样做。

代码语言:javascript
复制
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获得它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43082533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档