有一种简单的方法可以全局地抑制python脚本中的所有打印信息吗?
有一个场景我在脚本中放了很多打印信息用于调试目的,但是当用户运行时我不希望脚本打印所有信息。
因此,只有当我传递命令行参数(如debug = 1或类似的东西)时,打印才需要提供不应该打印的信息。
试图简单地说,
if sys.argv[1]:
debug=1
else:
debug=0
if debug:
print "Enabled debugging"
但是为此我需要在任何地方都包含if条件,而不是有任何简单的方法可以全局关闭打印信息吗?分享您的评论。
由于
答案 0 :(得分:5)
您必须将stdout重定向到/ dev / null。 以下是操作系统无关的方法。
import os
import sys
f = open(os.devnull, 'w')
sys.stdout = f
答案 1 :(得分:4)
这就是为什么你应该使用内置的logging
库而不是在任何地方编写print语句。
通过这种方式,您可以在需要的地方调用logger.debug()
,并在应用程序级别配置调试日志是否实际输出。