python异常消息格式

python异常消息格式,python,exception,Python,Exception,问题: 为什么在使用%s格式化消息时,我不会收到异常消息,而使用格式化会收到异常消息 失败: >>> Exception('foo %s', 'bar').message '' 作品: >>> Exception('foo {}'.format('bar')).message 'foo bar' 任何关于它在%s上失败的解释?您在异常中对%-替换的语法不正确。您需要使用%指定替换字符串: >>> Exception('foo %s' %

问题: 为什么在使用
%s
格式化消息时,我不会收到异常消息,而使用
格式化
会收到异常消息

失败:

>>> Exception('foo %s', 'bar').message
''
作品:

>>> Exception('foo {}'.format('bar')).message
'foo bar'

任何关于它在
%s
上失败的解释?

您在
异常中对%-替换的语法不正确。您需要使用
%
指定替换字符串:

>>> Exception('foo %s' % 'bar').message
'foo bar'

您的语法错误,您也需要使用
%
进行替换。实际使用
%
运算符格式化<代码>异常('foo%s''%bar')
@dartmouth。。太明显了,看不见,啊。谢谢,顺便说一句:
message
属性已被弃用,python的新版本没有它。只需使用
str(异常(…)
即可获取消息。此外,它甚至似乎没有在python2中记录,这与
args
相反。我相信
message
只有在您向构造函数提供单个参数时才会设置,否则这意味着异常在
args
中包含其他数据,并且基本实现不会假设您要将所有内容格式化为消息…@Bakuriu我也注意到了这一点,我的破解方法是这样做的:
>>asdf=Exception('foo%s''%bar')
,然后是
>>asdf.message
,它可以工作(在Python 2.7中)。这在Python3中已被完全删除。