【发布时间】:2014-04-25 19:10:15
【问题描述】:
我经常遇到这样的情况,即根据某些命令行参数,输入可能来自文件或标准输入。输出也是如此。我真的很喜欢 python 3 中的上下文管理器的工作方式,因此尝试将我所有的 open 调用作为某些 with 语句的一部分。但在这种情况下,我遇到了麻烦。
if args.infile:
with open(args.infile, "r") as f:
process(f)
else:
process(sys.stdin)
已经很笨拙了,输入和输出我必须满足四种组合。我想要一些更简单的东西,例如
with (open(args.infile, "r") if args.infile
else DummyManager(sys.stdin)) as f:
process(f)
python 标准库中有类似 DummyManager 的东西吗?实现上下文管理器协议但仅从其__enter__ 方法返回固定值的东西?我想这样的课程最有可能的位置是contextlib,因为我在那里没有找到这样的东西,也许没有这样的东西。您还可以提出其他优雅的解决方案吗?
【问题讨论】:
标签: python python-3.x stdin with-statement contextmanager