我有一个大型项目,其中包含足够多的模块,每个模块都将一些内容打印到标准输出中。现在,随着项目规模的扩大,没有大型项目。的print报表打印在其上制作的节目相当慢性病了很多。
因此,我现在想在运行时决定是否将任何内容打印到标准输出。我无法对模块进行更改,因为其中有很多更改。(我知道我可以将标准输出重定向到文件,但即使这样也很慢。)
所以我的问题是如何将stdout重定向为空,即如何使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中有内置的机制吗?还是有比这更好的东西?