Python xlrd: подавление предупреждающих сообщений

Я использую xlrd для обработки файлов Excel. Я запускаю скрипт в папке, содержащей много файлов, и печатаю сообщения, связанные с файлами. Однако для каждого файла, который я запускаю, я получаю следующее сообщение об ошибке xlrd:

WARNING *** OLE2 inconsistency: SSCS size is 0 but SSAT size is non-zero

есть ли способ подавить это сообщение об ошибке, поэтому CLI будет печатать только сообщение, которое я хочу?

4 ответов


Проверьте соответствующую часть xlrd docs. 2-й арг


ответ Джона работает, но имеет небольшую проблему:

xlrd записывает это предупреждающее сообщение и следующий символ новой строки отдельно в файл журнала. Поэтому вы получите пустую строку в stdout вместо сообщения, если вы используете класс фильтра, предложенный Джоном. Однако вы не должны просто отфильтровывать все новые строки из вывода журнала, потому что могут быть "реальные" предупреждения, которые затем будут отсутствовать в новых строках.

Если вы хотите просто игнорируйте все выходные данные журнала xlrd, это, вероятно, самое простое решение:

book = xlrd.open_workbook("foo.xls", logfile=open(os.devnull, 'w'))

import warnings

def fxn():
    warnings.warn("deprecated", DeprecationWarning)

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    fxn()

-> http://docs.python.org/library/warnings.html#temporarily-suppressing-warnings


для чего это стоит, у меня было такое же предупреждающее сообщение; когда я удалил первую строку (которая была пустой), предупреждение исчезло.