gpt4 book ai didi

python - 用户警告的堆栈跟踪

转载 作者:太空狗 更新时间:2023-10-30 00:01:26 24 4
gpt4 key购买 nike

我在日志中看到这样的警告:

py.warnings.__init__: WARNING .../bs4/__init__.py:219: UserWarning: "foo" 
looks like a filename, not markup. You should probably open this file
and pass the filehandle into Beautiful Soup

此消息没有太大帮助。

我想查看发生这种情况的堆栈跟踪。

请不要细看这个警告的内容。这个问题不是关于 Beautiful Soup :-)

一个简单的解决方案是修改第三方代码(第 219 行的 bs4/__init__.py)并添加如下内容:

import traceback
logger.warn('Exc at ...\n%s' % ''.join(traceback.format_stack()))

但我想避免这种情况。原因:

  • 这是来自生产系统的警告。我不想改变来源。
  • 下次出现这样的警告时,我希望立即查看堆栈跟踪

有没有我可以更改的 python 标志或设置,不仅可以查看一行,还可以查看 while 堆栈跟踪?我需要上面的框架来调试它。

在此环境中使用 Python 2.7。

最佳答案

您需要执行以下操作:

  1. 如果 USER_SITE 不存在则创建:发出 python -c "import site; site._script()",查看 USER_SITE 变量内容
  2. 在该目录中放置一个文件 usercustomize.py,代码如下:

    import traceback
    import warnings


    _old_warn = warnings.warn
    def warn(*args, **kwargs):
    tb = traceback.extract_stack()
    _old_warn(*args, **kwargs)
    print("".join(traceback.format_list(tb)[:-1]))
    warnings.warn = warn

    归功于 this回答代码。

照常运行代码。我的测试代码:

import warnings

def f():
warnings.warn("foz")

f()

手术前:

$ python test_warn.py
test_warn.py:4: UserWarning: foz
warnings.warn("foz")

之后:

$ python test_warn.py
<USER_SITE_REDACTED>/usercustomize.py:6: UserWarning: foz
_old_warn(*args, **kwargs)
File "test_warn.py", line 6, in <module>
f()
File "test_warn.py", line 4, in f
warnings.warn("foz")

关于python - 用户警告的堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45562594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com