Python:将sys.stdout还原为默认值

时间:2018-07-14 14:18:47

标签: python python-3.x stdout

我想将输出写入文件,因此我做了

Employee

但是后来我想在写入文件后再打印回控制台

sys.stdout = open(outfile, 'w+')

我知道了

sys.stdout.close()
sys.stdout = None

很明显,默认输出流不能为AttributeError: 'NoneType' object has no attribute 'write' 所以我要对Python怎么说

None

3 个答案:

答案 0 :(得分:4)

重新分配给sys.__stdout__

docs

  

在程序开始时包含stdin,stderr和stdout的原始值。它们在定稿过程中使用,无论是否已重定向sys.std *对象,将其打印到实际的标准流都很有用。

或者您可以做

print(output, file=myoutputfile) 

并避免该问题。

答案 1 :(得分:2)

在Python3中使用redirect_stdout;给出了一个类似的例子:

  

要将help()的输出发送到磁盘上的文件,请将输出重定向到   常规文件:

with open('help.txt', 'w') as f:
    with redirect_stdout(f):
        help(pow)

答案 2 :(得分:1)

根据答案here,您不需要保存对旧标准输出的引用。只需使用sys .__ stdout __。

此外,您可以考虑使用with open('filename.txt', 'w+') as f并改为使用f.write