2011-06-23 2 views
3

Мой код импортирует функцию (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 
+2

sys.stdout! = Sys.stderr – tMC

ответ

4

Я думаю, что проблема с с образцом кода, при условии, что os.devnull является строкой; а не файловый объект. Вам нужно обернуть его в open(). Как это:

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

нет необходимости создавать резервные копии оригинальных stdios, они сохраняются в sys.__stdin__, sys.__stdout__ и sys.__syserr__

Если вы уверены, что выход выходит на стандартный вывод (через print заявление) замените stderr на stdout.

+2

Это приведет к проглатыванию * all * вывода к перенаправленному файлу и оставьте его отключенным, если возникло исключение. – delnan

Смежные вопросы