Bon*_*uar 30 python debugging warnings pandas
使用Pandas,我仍然是Python的新手,我在调试Python脚本时遇到了一些问题.
我收到以下警告信息:
[...]\pandas\core\index.py:756: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
return self._engine.get_loc(key)
Run Code Online (Sandbox Code Playgroud)
而且无法找到它的来源.
经过一些研究,我试图在Pandas lib文件(index.py)中做到这一点:
try:
return self._engine.get_loc(key)
except UnicodeWarning:
warnings.warn('Oh Non', stacklevel=2)
Run Code Online (Sandbox Code Playgroud)
但这并没有改变警告信息.
And*_*den 28
您可以过滤警告以使您能够调试(例如使用pdb):
import warnings
warnings.filterwarnings('error')
Run Code Online (Sandbox Code Playgroud)
*警告过滤器可以更精细地管理(这可能更合适),例如:
warnings.filterwarnings('error', category=UnicodeWarning)
warnings.filterwarnings('error', message='*equal comparison failed*')
Run Code Online (Sandbox Code Playgroud)
将按顺序查找多个过滤器.("如果两者都匹配特定警告,则靠近列表前面的条目会覆盖列表后面的条目.")
您还可以使用命令行来控制警告:
python -W error::UnicodeWarning your_code.py
Run Code Online (Sandbox Code Playgroud)
从手册页:
-W argument
[...] 错误引发异常而不是打印警告消息.
这与在代码中添加以下内容具有相同的效果:
import warnings
warnings.filterwarnings('error', category=UnicodeWarning)
Run Code Online (Sandbox Code Playgroud)
正如Andy的回答中已经说过的那样.