Python撤消标准输出重定向
所以我从 您可以禁止打印语句。但是,是否可以稍后撤消该命令,以便在某个时间点之后,打印语句确实会再次打印 例如,假设我想打印“b”而不是“a” 我会:Python撤消标准输出重定向,python,Python,所以我从 您可以禁止打印语句。但是,是否可以稍后撤消该命令,以便在某个时间点之后,打印语句确实会再次打印 例如,假设我想打印“b”而不是“a” 我会: import os f = open(os.devnull, 'w') sys.stdout = f print("a") # SOME COMMAND print("b") 有人能告诉我什么是“某些命令”吗?原始的sys.stdout始终保存在: 但是,文档中确实指出,最好明确保存原始的sys.stdout: 它还可用于将实际文件还原
import os
f = open(os.devnull, 'w')
sys.stdout = f
print("a")
# SOME COMMAND
print("b")
有人能告诉我什么是“某些命令”吗?原始的
sys.stdout
始终保存在:
但是,文档中确实指出,最好明确保存原始的sys.stdout
:
它还可用于将实际文件还原为已知的工作文件
对象,以防它们被损坏的对象覆盖。
但是,执行此操作的首选方法是显式保存
替换之前的流,并还原保存的对象
从Python3.4开始,您可以这样做(请参阅)
stdout
在with语句中被抑制。在具有上下文的外部,您的标准输出将被还原
顺便说一句:在您的原始版本中没有必要f=open(os.devnull,'w')
,sys.stdout=None
就足够了,正如我最近了解到的:。使用,不用担心。您可以使用上下文管理器,如中所示。
sys.stdout = sys.__stdout__
import os
import sys
f = open(os.devnull, 'w')
x = sys.stdout # save sys.stdout
sys.stdout = f
print("a")
sys.stdout = x # re-assign sys.stdout
print("b") # print 'b'
from contextlib import redirect_stdout
with redirect_stdout(None):
# stdout suppressed
# stdout restored