草庐IT

WARNINGS

全部标签

Python 警告——如何不打印源代码行?

这个问题在这里已经有了答案:Printonlythemessageonwarnings(4个答案)关闭8年前。当我在python中发出warnings.warn()警告时,stderr的输出不仅包括我的警告方法,还包括源代码中的违规行。我想从源代码中删除这一行,因为它确实有损于清楚地表达警告。有谁知道如何做到这一点?

Pythonic,自定义警告

基本问题:制作我自己的自定义警告类的最Pythonic/合乎逻辑的方法是什么?我应该继承哪些正确的警告和异常类?动机:我正在编写的库的要求指定如果MyContainer对象c包含项目x并且库的调用者试图将x的“副本”——称之为y——放入c中,a向调用者发出警告,并将c.my_transformation_method(x,y)的返回值放入c以替换x。换句话说,MyContainer将用它们的副本替换元素,但在这样做时必须警告用户。根据我的阅读,警告库的调用者非致命操作的最灵活的方法是使用warningsstandardmodule.它允许调用者按照它认为合适的方式处理警告,从忽略警告到

python - 使用 doctest 测试警告

我想使用doctests测试某些警告的存在。例如,假设我有以下模块:fromwarningsimportwarnclassFoo(object):"""InstantiatingFooalwaysgivesawarning:>>>foo=Foo()testdocs.py:14:UserWarning:Boo!warn("Boo!",UserWarning)>>>"""def__init__(self):warn("Boo!",UserWarning)如果我运行python-mdoctesttestdocs.py以在我的类中运行doctest并确保打印警告,我得到:testdocs.py

python - 忽略 python 警告

我想忽略我的开发环境中的所有UserWarning,这样它们就不会打印到我的错误日志文件中。我已经阅读了warnings模块的文档,并尝试了类似的方法:importwarningsimportthe_module_that_warnswarnings.simplefilter("ignore",UserWarning)但是UserWarning仍然被打印,这是为什么? 最佳答案 如果模块在它导入时发出警告,那么你这样做就太晚了。相反,做importwarningswarnings.simplefilter("ignore",User

python - 防止或消除 loadtxt 中的 'empty file' 警告

我的代码遍历许多文件,使用以下命令将它们读入列表:data=np.loadtxt(myfile,unpack=True)其中一些文件是空的(我无法控制),当发生这种情况时,我会在屏幕上打印此警告:/usr/local/lib/python2.7/dist-packages/numpy/lib/npyio.py:795:UserWarning:loadtxt:Emptyinputfile:"/path_to_file/file.dat"warnings.warn('loadtxt:Emptyinputfile:"%s"'%fname)如何防止显示此警告? 最佳

python - 使用 ctypes 数组作为 numpy 数组时的 PEP 3118 警告

当我尝试将ctypes数组用作numpy数组时收到以下警告消息:Python2.7.1(r271:86832,Nov272010,18:30:46)[MSCv.150032bit(Intel)]onwin32Type"help","copyright","credits"or"license"formoreinformation.>>>importctypes,numpy>>>TenByteBuffer=ctypes.c_ubyte*10>>>a=TenByteBuffer()>>>b=numpy.ctypeslib.as_array(a)C:\Python27\lib\site-pa

python - 运行时警告 : overflow encountered in ubyte_scalars

我是Python的新手,这是我编写脚本的第一件事,我只是想知道我能做些什么来删除这个警告:Warning(fromwarningsmodule):File"C:\Users\Luri\Desktop\BotStuff\ImageSaver.py",line76currentdiff=abs(anread[w,h])-abs(bnread[w,h])RuntimeWarning:overflowencounteredinubyte_scalars我已经尝试用谷歌搜索答案,但就解决这个问题而言,我并没有明确的答案。我正在尝试编写一个程序,该程序将从光标周围的矩形中获取的不断更新的图像与我正

Python - 再次显示 'once' 警告(重置所有警告注册表)

有没有办法重置__warningregistry__一次加载所有函数?我想强制再次显示使用“一次”过滤器过滤的所有警告。除了调用.__globals__['__warningregistry__'].clear()之外,我找不到其他办法。在我加载的每个函数上(包括那些属于导入模块的函数。)所以,我想要的是类似warnings.clear()的东西函数执行以下操作:>>>importwarnings>>>warnings.warn('blah')WARNING:root:blah->UserWarningat...>>>warnings.warn('blah')>>>warnings.c

python - 如何禁用然后重新启用警告?

我正在为Python库编写一些单元测试,并希望将某些警告作为异常引发,我可以使用simplefilter轻松做到这一点。功能。但是,对于一个测试,我想禁用警告,运行测试,然后重新启用警告。我使用的是Python2.6,所以我应该能够使用catch_warnings来做到这一点上下文管理器,但它似乎对我不起作用。即使失败了,我也应该可以调用resetwarnings然后重新设置我的过滤器。这是一个说明问题的简单示例:>>>importwarnings>>>warnings.simplefilter("error",UserWarning)>>>>>>deff():...warnings.

python - 发出 Cythonic 警告?

在Cython中,常用的raise关键字发出C代码,其中包含对Cython源文件的行和名称的引用,从而生成有用的错误消息。但是,我还没有看到任何警告。简单地调用warnings.warn会让解释器对警告的来源感到困惑。如果pyx文件有类似于__LINE__宏的内容,我可以使用PyErr_WarnExplicit。在Cython中是否有发出警告的标准方法或引用pyx行号的标准方法?更新这个问题已经开放了几个月,所以我只能假设Cython目前没有发出警告的好方法。我会在这里打开它,以防有人找到方法/提交补丁来使这项工作正常进行。 最佳答案