从tweepy异常实例获取错误代码

时间:2013-06-17 22:13:10

标签: python python-2.7 twitter tweepy

我是python的新手,我正在尝试使用库。它提出了一个例外,我试图找出哪一个。这就是我想要的:

except tweepy.TweepError as e:
    print e
    print type(e)
    print e.__dict__
    print e.reason
    print type(e.reason)

这就是我得到的:

[{u'message': u'Sorry, that page does not exist', u'code': 34}]
<class 'tweepy.error.TweepError'>
{'reason': u"[{u'message': u'Sorry, that page does not exist', u'code': 34}]", 'response': <httplib.HTTPResponse instance at 0x00000000029CEAC8>}
[{u'message': u'Sorry, that page does not exist', u'code': 34}]
<type 'unicode'>

我试图找到那个代码。我试过e.reason.code没有成功,我不知道该尝试什么。

5 个答案:

答案 0 :(得分:16)

这个怎么样?

except tweepy.TweepError as e:
    print e.message[0]['code']  # prints 34
    print e.args[0][0]['code']  # prints 34

答案 1 :(得分:9)

这是2018年的情况:

e.message[0]['code']不再有效。仍然需要注意in the documentation,但文档已过时,问题已经been reported。目前您收到错误'TweepError' object has no attribute 'message'

我找到了几种可行的解决方案:

  • e.api_code
    返回一个简单的代码值(类int):
    34
  • e.reason
    返回包含代码和消息的文本(类str):
    [{'code': 34, 'message': 'Sorry, that page does not exist.'}]
  • e.args[0][0]['code']
    e.args[0][0]['message']
    分别返回一个简单的代码值(类int)和简单的消息(类str)。
    34 {
    {1}}
  • Sorry, that page does not exist.
    返回完整的Requests.response object,然后可以使用Requests API通过多种方式处理。

尽可能满足您的需求。

答案 2 :(得分:8)

自2013年以来,情况发生了很大变化。截至目前,正确的答案是使用e.api_code

答案 3 :(得分:2)

要获取错误代码,请使用monq发布的方法。以下示例说明了如何获取错误代码和消息。我必须从e.reason字符串中提取消息,如果有人有更好的方法来检索消息,请分享。

注意:此代码适用于任何错误代码/原因,格式如下。

[{&#39;代码&#39;:50,&#39;消息&#39;:&#39;用户未找到。&#39;}]

def getExceptionMessage(msg):
    words = msg.split(' ')

    errorMsg = ""
    for index, word in enumerate(words):
        if index not in [0,1,2]:
            errorMsg = errorMsg + ' ' + word
    errorMsg = errorMsg.rstrip("\'}]")
    errorMsg = errorMsg.lstrip(" \'")

    return errorMsg

你可以这样称呼它:

try:
    # Some tweepy api call, ex) api.get_user(screen_name = usrScreenName)
except tweepy.TweepError as e:
    print (e.api_code)
    print (getExceptionMessage(e.reason))

答案 4 :(得分:-1)

我是这样做的:

except tweepy.TweepError as e:
    print e.response.status