Список уровней совместимости журналов между Python 2 и Python 3

Чтобы получить список уровней ведения журнала в Python 2, я должен вызвать это:

logging._levelNames.keys()

В то время как Python 3 logging module имеет это:

list(logging._nameToLevel)

Я просто добавляю six в мой проект, чтобы обеспечить совместимость между Python 2 и Python 3. Какой самый чистый способ выяснить эту проблему совместимости?

1 ответ

Решение

Вы не должны сознательно обращаться к атрибуту, который начинается с_обычно это означает, что это закрытый атрибут, и его нельзя использовать в другом месте.

А поскольку уровни ведения журнала - это всего лишь короткий список, вы можете просто скопировать, вставить и создать собственный список:

levels = ['CRITICAL', 'FATAL', 'ERROR', 'WARN', 'WARNING', 'INFO', 'DEBUG', 'NOTSET']

Кстати, если вы заметили, logging._levelNames.keys() а также list(logging._nameToLevel) дает разные результаты, первый также содержит некоторые целые числа [0, 10, 20, 30, 40, 50] в то время как последний не делает.

Другие вопросы по тегам