我的代码从另一个模块导入一个函数(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
答案 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。