我经常遇到这样的情况,即根据某些命令行参数,输入可能来自文件或标准输入。输出也是如此。我真的很喜欢 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,因为我在那里没有找到类似的东西,所以也许没有这样的东西。您可以建议其他优雅的解决方案吗?