在下面的编程中,首先我们将所有打印重定向到日志文件,然后关闭文件对象,然后再次将print命令重新设置为交互式提示符。
import sys
temp = sys.stdout # store original stdout object for later
sys.stdout = open('log.txt', 'w') # redirect all prints to this log file
print("testing123") # nothing appears at interactive prompt
print("another line") # again nothing appears. it's written to log file instead
sys.stdout.close() # ordinary file object
sys.stdout = temp # restore print commands to interactive prompt
print("back to normal") # this shows up in the interactive prompt
为什么python不支持类似的方法来将命令恢复为交互模式
sys.stdout.default()
答案 0 :(得分:1)
它几乎存在:sys.stdout = sys.__stdout__
在程序开始时将stdout重置为其原始值 。
只是它,但可能不会做您想要的。您可能会 stack sys.stdout
重定向,在这种情况下,恢复到先前的重定向而不是原始的重定向是有意义的。在IDLE交互式解释器中的一个实际用例。原始的stdout在Windows上将是None,因为它是一个GUI程序,并将被定向到从Linux上启动它的终端。无论哪种情况,重定向后,您当然都不希望使用该 default 原始值,而是使用IDLE设置的原始值。
这就是为什么在重定向原始标准输出时应始终保存原始标准输出,而在不再需要重定向时还原原始标准输出的原因。