我有一个由足够多的模块组成的大型项目,每个模块都会向标准输出打印一些内容。现在随着项目规模的扩大,没有大的。 print
语句在标准输出上打印了很多,这使得程序相当慢。
所以,我现在想在 runtime 决定是否将任何内容打印到标准输出。我无法对模块进行更改,因为它们有很多。 (我知道我可以将标准输出重定向到一个文件,但即使这样也相当慢。)
所以我的问题是如何将标准输出重定向到无,即如何使 print
语句什么都不做?
# I want to do something like this.
sys.stdout = None # this obviously will give an error as Nonetype object does not have any write method.
目前我唯一的想法是创建一个具有 write 方法(什么都不做)的类,并将标准输出重定向到此类的实例。
class DontPrint(object):
def write(*args): pass
dp = DontPrint()
sys.stdout = dp
python 中是否有为此的内置机制?或者还有什么比这更好的吗?
最佳答案
跨平台:
import os
import sys
f = open(os.devnull, 'w')
sys.stdout = f
在 Windows 上:
f = open('nul', 'w')
sys.stdout = f
在 Linux 上:
f = open('/dev/null', 'w')
sys.stdout = f
关于python - 在python中将stdout重定向到 "nothing",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6735917/