gpt4 book ai didi

python - 如何忽略某些警告,而其他警告则转向 Python 命令行的异常?

转载 作者:太空宇宙 更新时间:2023-11-04 10:14:42 25 4
gpt4 key购买 nike

如何从命令行执行 Python 并忽略某些警告(例如 DeprecationWarning ),同时将其余警告变成异常?

可以-W多次使用选项来执行此操作?

我面临的具体问题是我正在运行 pytest/pytest-cov tox 内部/virtualenv因为 virtualenv uses an outdated site.py module , 一个 DeprecationWarning当我运行 -Werror 时抛出在我访问我的代码以捕获它之前。我想通过至少仅忽略此警告并将其他警告(ImportWarning 等)转变为异常,以便我可以在自己的代码中检测和处理这些警告,从而最大限度地减少对我的测试的影响。

最佳答案

手册页确实有这方面的信息,但有点难读。在发布问题之前我找不到这个问题,所以我会看看是否可以更容易地找到它:

陷阱:-W 选项被后面的选项掩盖,-Werror 需要发生在之前 -Wignore


按异常过滤:

python -werror -Wignore::PendingDeprecationWarning your_stuff.py

按行过滤:

python -Werror -Wignore::::32 your_stuff.py

忽略第 32 行的警告


按模块/文件过滤:

python -Werror -Wignore:::site: your_stuff.py

忽略示例中 site.py 模块的任何警告(异常回溯中的最后一个文件)


选项是action:message:category:module:line


手册页:

   -W argument
Warning control. Python sometimes prints warning message to sys.stderr. A typical warning message
has the following form: file:line: category: message. By default, each warning is printed once for
each source line where it occurs. This option controls how often warnings are printed. Multiple -W
options may be given; when a warning matches more than one option, the action for the last matching
option is performed. Invalid -W options are ignored (a warning message is printed about invalid
options when the first warning is issued). Warnings can also be controlled from within a Python
program using the warnings module.

The simplest form of argument is one of the following action strings (or a unique abbreviation):
ignore to ignore all warnings; default to explicitly request the default behavior (printing each
warning once per source line); all to print a warning each time it occurs (this may generate many
messages if a warning is triggered repeatedly for the same source line, such as inside a loop); modâ€
ule to print each warning only the first time it occurs in each module; once to print each warning
only the first time it occurs in the program; or error to raise an exception instead of printing a
warning message.

The full form of argument is action:message:category:module:line. Here, action is as explained
above but only applies to messages that match the remaining fields. Empty fields match all values;
trailing empty fields may be omitted. The message field matches the start of the warning message
printed; this match is case-insensitive. The category field matches the warning category. This
must be a class name; the match test whether the actual warning category of the message is a subâ€
class of the specified warning category. The full class name must be given. The module field
matches the (fully-qualified) module name; this match is case-sensitive. The line field matches the
line number, where zero matches all line numbers and is thus equivalent to an omitted line number.

关于python - 如何忽略某些警告,而其他警告则转向 Python 命令行的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36140169/

25 4 0
文章推荐: python - 如何等待页面在 Python Selenium 中加载
文章推荐: linux - 如何将背景图像添加到 Angular 中的
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com