习惯使用stdout作为替代

时间:2017-10-03 10:55:41

标签: python stdin with-statement

这是惯用的吗?

with open(output_file, 'w') if output_file else sys.stdout as outf:
    outf.write("hello")

with阻止stdout会导致麻烦{关闭它吗?

1 个答案:

答案 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")