26

在我的 python 程序的开头,我有以下行:

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

在我的程序进行到一半时,我想将标准输出设置回正常的标准输出。我该怎么做呢?

4

4 回答 4

43

原件stdout可以作为sys.__stdout__. 这是记录在案的

于 2013-01-09T19:48:06.170 回答
5

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

sys.stdout = sys.__stdout__
sys.stderr = sys.__stderr__
于 2018-05-04T07:12:20.810 回答
2

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

orig_stdout = sys.stdout
sys.stdout = open('stdout_file', 'w')
sys.stdout = orig_stdout
于 2019-11-26T13:18:26.390 回答
1

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

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

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

把它拿回来

f, sys.stdout = sys.stdout, f
print("sample")
于 2020-05-29T19:11:06.813 回答