我使用i18ndude
安装了easy_install
(Plone中使用的国际化实用程序)。
当我尝试在终端上运行实用程序i18ndude
时,我得到:
/usr/local/lib/python2.6/dist-packages/i18ndude-3.1.2-py2.6.egg/i18ndude/odict.py:7: DeprecationWarning: object.__init__() takes no parameters
dict.__init__(self, dict)
从命令行调用该实用程序时,如何禁止显示这些警告消息?可能吗?我在理论上知道我应该安装其他Python解释器,并从中调用i18ndude,但我想要一个更简单的方法(比如参数或类似的东西)。
顺便说一句,我正在使用Plone official site中的i18ndude
脚本。
答案 0 :(得分:4)
可以使用重定向,但它会抑制发送到该“流”的所有消息; e.g。
i178ndude 2>/dev/null
向流设备发送流2(通常是程序的stderr,但是可以将弃用警告发送到其他流)。即使你不知道怎么修复,这就是“修复它”。确实有一个选项-W,可以像这样使用:-W ignore::DeprecationWarning
或简单-W ignore
忽略所有警告。您可以编写一个脚本来调用程序中的python解释器,或者更加逻辑地修改prog的#!
,例如#!/usr/bin/env python -W ignore::DeprecationWarning
答案 1 :(得分:4)
如果作为脚本运行,您可以使用:
#!/usr/bin/env python -W ignore::DeprecationWarning
答案 2 :(得分:3)
你可以temporarily suppress warnings:
如果您使用的代码会引发警告,例如已弃用的函数,但不希望看到警告,则可以使用catch_warnings上下文管理器来禁止警告:
import warnings
def fxn():
warnings.warn("deprecated", DeprecationWarning)
with warnings.catch_warnings():
warnings.simplefilter("ignore")
fxn()
在上下文管理器中,所有警告都将被忽略。 这使您可以使用已知弃用的代码而无需查看警告,同时不会抑制可能不知道其使用已弃用代码的其他代码的警告。注意:这只能在单线程应用程序中得到保证。如果两个或多个线程同时使用catch_warnings上下文管理器,则行为未定义。
答案 3 :(得分:1)
请参阅cmdoption-W
:
-W arg
警告控制。默认情况下,Python的警告机制会向sys.stderr输出警告消息。典型的警告消息具有以下形式:
file:line:category:message
默认情况下,每个警告都会针对出现的每个源行打印一次。此选项控制警告的打印频率。
可以给出多个-W选项;当警告与多个选项匹配时,将执行最后一个匹配选项的操作。忽略无效的-W选项(但是,在发出第一个警告时会打印有关无效选项的警告消息。)