我有一个由足够多的模块组成的大型项目,每个模块都向标准输出打印一些东西。现在随着项目规模的扩大,有很多没有。 print
条语句在标准输出上打印了很多,这使得程序相当慢。
所以,我现在想在运行时决定是否将任何内容打印到标准输出。我无法对模块进行更改,因为模块很多。 (我知道我可以将标准输出重定向到一个文件,但即使这样也很慢。)
所以我的问题是如何将标准输出重定向到空,即如何使 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 方法(什么都不做)的类,并将 stdout 重定向到此类的实例。
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/