Модуль Warnings печатает часть предупреждения дважды - PullRequest
0 голосов
/ 05 февраля 2020

Если я использую этот код в сценарии:

import warnings
if True:
    warnings.warn(
        "The specified directory is not empty, and does not "
        "appear to contain a pipeline we can update. Exiting."
    )

, я получаю это в качестве вывода:

~ > create.py -p something -o .
somethings.py:58: UserWarning: The specified directory is not empty, and does not appear to contain a pipeline we can update. Exiting.
  "The specified directory is not empty, and does not"
~ >

Почему снова печатается строка The specified directory is not empty, and does not и как ее повернуть это выключено?

С наилучшими пожеланиями.

1 Ответ

1 голос
/ 05 февраля 2020

Попробуйте это:

warnings.warn("The specified directory is not empty, and does not "
              "appear to contain a pipeline we can update. Exiting.", stacklevel=2)

Это даст вам следующее предупреждение:

sys: 1: Предупреждение пользователя: Указанный каталог не пуст и не отображается в содержать конвейер, который мы можем обновить. Выход.

Предупреждения по умолчанию для стекового уровня 1, поэтому они повторяются. Первый уровень стека сообщает пользователю точную строку кода, из которой возникло предупреждение, а именно строку вызова вашей функции предупреждения. Таким образом, поместив его на уровень 2 стека, он не покажет строку предупреждения, а только само предупреждение.

Если вас интересует дополнительная настройка вывода предупреждений, вы можете использовать функцию warnings.warn_explicit ().

https://docs.python.org/3.6/library/warnings.html#available -функции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...