python - 在python中将stdout重定向到 "nothing"

标签 python python-2.7

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

相关文章:

python - 从列表中删除以特定字符开头的元素

python - Pandas+seaborn 多维数据框分面

python - bisect_left 和 bisect_right 什么时候不相等?

python-2.7 - 使用matplotlib中的一组标量值为球体表面着色

python - 如何循环遍历列表?

python - py2neo (1.6) 如何在没有 CypherQuery 的情况下逐个节点属性获取现有节点

python - 编写一个 CPU 绑定(bind)脚本来衡量粗略的 CPU 性能

python - 使用python中的beautifulsoup从具有更多文本内容的网页中提取数据

python - TypeError : src is not a numpy array, 既不是标量。无流

python - Mac OS X 查找版本返回两条语句