Python从特定函数捕获警告消息

2024-06-01 05:05:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python2.7用OGR from OSGeo修改ESRI形状文件。我创建了一个新的属性字段,但是属性表中可能已经存在该字段名。在这种情况下,函数将显示如下警告消息

Warning 6: Normalized/laundered field name: 'id' to 'id_1'

这意味着它会自动重命名字段。我没问题,但我想抓住那个警告信息来取新名字。我尝试使用warnings模块,但无法使其工作。我要做的是:

^{pr2}$

我尝试了In Python, how does one catch warnings as if they were exceptions?中最上面的两个答案,但我担心警告消息没有被识别为真正的警告。我是这样测试的:

warnings.filterwarnings('error')
try:
    out_lyr.CreateField(field)
except Warning:
    print 'WARNING' # never ends up here

为了抓住真正的警告:

with warnings.catch_warnings(record=True) as w:
    warnings.simplefilter('always')
    out_lyr.CreateField(field)
    print w # returns an empty list

我知道在第一时间避免特定警告消息的方法,但是我很想知道如何真正捕捉到警告消息。有什么建议吗?在


Tags: fromid消息警告field属性asout