比较python中的'clienterror'和'string'

时间:2019-11-14 16:50:15

标签: python

我正在尝试将clienterror消息的输出与python中的字符串进行比较,但无法正常工作。 这种事可能吗?

我尝试了3种解决方法:(A)(我没有输出)

    except ClientError as e:
    a = "An error occurred (ValidationError) when calling the UpdateStack operation: Stack [name] does not exist"
    b = "An error occurred (ValidationError) when calling the UpdateStack operation: No updates are to be performed."
    if e is a:
        print ('Stack [name] does not exist')
    if e == b:
        print ('No updates are to be performed')

(B)

print e[5]
IndexError: tuple index out of range
--
    print (e[76:])
()
    print (e[:-1])
()

(C) 我试图通过运行来了解句子中有多少部分

        print (len(e))

但是我收到“ TypeError:类型为'ClientError'的对象没有len()“

所以...我真的不能将ClientError与字符串进行比较吗?

1 个答案:

答案 0 :(得分:2)

否,您无法将字符串与异常进行比较。它们不是同一类型。 is仅在从字面上看是同一对象时才返回true。即使==在这里也不起作用,因为如上所述,它们不是同一类型。

不过,您可以将异常强制转换为字符串,然后使用in来查看它是否包含消息:

ex_str = str(e)
a = "does not exist"

if a in ex_str:
    print ('Stack [name] does not exist')

in检查仅在str(e)包含完整的错误消息时才起作用。如果不是,则需要以其他方式获取消息。如何处理异常消息取决于子类,并且我无权访问ClientError对象进行测试;我也无法在线上找到它的定义。