我有一个由足够多的模块组成的大型项目,每个模块都向标准输出打印一些东西。现在随着项目规模的扩大,有很多没有。 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/

10-14 10:27