Python - 在将stdout重定向到文件之后将其重置为正常

时间:2013-01-09 19:47:04

标签: python stdout

在我的python程序开始时,我有以下几行:

sys.stdout = open('stdout_file', 'w')

在我的程序中途,我想将stdout设置回正常的标准输出。我该怎么做?

4 个答案:

答案 0 :(得分:29)

原始stdout可以sys.__stdout__访问。这is documented

答案 1 :(得分:1)

当然,stderr也是如此。最后,需要这些行才能获得原始流。

sys.stdout = sys.__stdout__
sys.stderr = sys.__stderr__

答案 2 :(得分:1)

另一种常见的做法是存储默认的stdout和/或stdin,然后在完成将输出/输入发送到自定义流后将它们返回。 例如:

orig_stdout = sys.stdout
sys.stdout = open('stdout_file', 'w')
sys.stdout = orig_stdout

答案 3 :(得分:0)

打开文件并与文件变量交换sys变量

f = open("sample.txt", "w")

sys.stdout, f = f, sys.stdout
print("sample", flush=True)

并取回

f, sys.stdout = sys.stdout, f
print("sample")