Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python撤消标准输出重定向_Python - Fatal编程技术网

Python撤消标准输出重定向

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: 它还可用于将实际文件还原

所以我从

您可以禁止打印语句。但是,是否可以稍后撤消该命令,以便在某个时间点之后,打印语句确实会再次打印

例如,假设我想打印“b”而不是“a”

我会:

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