这是惯用的吗?
with open(output_file, 'w') if output_file else sys.stdout as outf:
outf.write("hello")
with
阻止stdout
会导致麻烦{关闭它吗?
答案 0 :(得分:4)
如果您在此之后尝试写入stdout,它将:
Boolean var = Boolean.True;
这可以安全地使用的唯一方法是作为脚本中的最后一个语句,您知道以后不会使用>>> import sys
>>> output_file = None
>>> with open(output_file, 'w') if output_file else sys.stdout as outf:
... outf.write("hello")
...
hello5
>>> print("test")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: I/O operation on closed file.
,例如:
stdout
但即使这样也错了。更好:单独打开并使用文件,并明确说明:
if __name__ == '__main__':
output_file = ... # parse arguments
with open(output_file, 'w') if output_file else sys.stdout as outf:
outf.write("hello")