在我的python程序开始时,我有以下几行:
sys.stdout = open('stdout_file', 'w')
在我的程序中途,我想将stdout设置回正常的标准输出。我该怎么做?
答案 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")