相关疑难解决方法(0)

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

我有一个大型项目,包含足够多的模块,每个模块都打印到标准输出.现在随着项目规模的扩大,有大量的没有.print在std上打印很多的语句使程序变得相当慢.

所以,我现在想在运行时决定是否向stdout打印任何东西.我无法对模块进行更改,因为有很多模块.(我知道我可以将stdout重定向到一个文件,但即使这样也相当慢.)

所以我的问题是如何将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.
Run Code Online (Sandbox Code Playgroud)

目前我唯一的想法是创建一个具有write方法(什么都不做)的类,并将stdout重定向到这个类的实例.

class DontPrint(object):
    def write(*args): pass

dp = DontPrint()
sys.stdout = dp
Run Code Online (Sandbox Code Playgroud)

在python中有一个内置机制吗?还是有比这更好的东西?

python python-2.7

116
推荐指数
5
解决办法
8万
查看次数

暂时重定向stdout/stderr

是否可以在Python中暂时重定向stdout/stderr(即在方法的持续时间内)?

编辑:

当前解决方案(我最初记得但后来忘记了)的问题在于它们没有重定向 ; 相反,他们只是完整地替换了流.因此,如果一个方法有一个本地副本,一个变量的任何原因(例如,由于流被作为参数传递的东西),它不会工作.

有解决方案吗

python redirect stdout stderr

55
推荐指数
5
解决办法
6万
查看次数

标签 统计

python ×2

python-2.7 ×1

redirect ×1

stderr ×1

stdout ×1