如何过滤掉警告信息

时间:2011-06-23 16:37:50

标签: python

我的代码从另一个模块导入一个函数(import_function)(由其他人编写)。

ret = import_function(arg1,arg2)

该函数在运行时将打印一些警告信息(该函数使用print()显示警告消息)。 问题是:如何过滤掉所有这些警告信息?

我尝试了以下方法,但它不起作用。

console_redirect = sys.stdout
sys.stdout = os.devnull
ret = import_function(arg1,arg2)
sys.stdout = console_redirect

1 个答案:

答案 0 :(得分:4)

我认为您提供的示例代码的问题是os.devnull是一个字符串;不是文件对象。您需要将其包装在open()中。像这样:

sys.stderr = open(os.devnull, 'w')
ret = import_function(arg1,arg2)
sys.stderr = sys.__stderr__

无需备份原始标准,它们会保留在sys.__stdin__sys.__stdout__sys.__syserr__

如果您确定输出是在stdout上发出的(通过print语句),请用stdout替换stderr。