我想将输出写入文件,因此我做了
Employee
但是后来我想在写入文件后再打印回控制台
sys.stdout = open(outfile, 'w+')
我知道了
sys.stdout.close()
sys.stdout = None
很明显,默认输出流不能为AttributeError: 'NoneType' object has no attribute 'write'
,所以我要对Python怎么说:
None
答案 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
。