如何在response.text中将已接受状态与400状态分开

时间:2018-02-13 17:33:35

标签: python python-2.7 python-requests put http-response-codes

我从PUT请求中收到两条冲突的错误消息。我正在使用Python请求模块和客户端.response.text看起来像这样:

    {u'status': 400, u'errors': {u'error': u'We have identified 1 error 
    in your request:  (1) We could not download the URL'}, 
    u'reference': u'4C7EC36B:CE5D_0A40E1F1:01BB_5A822CF3_EFE35:18B1'}
    {u'status': u'accepted', u'mediaId': u'f3327905-1873-4e0d-b07c-
    4e7f88741c3b', u'_links': {u'self': {u'href': u'/v2-
    beta/media/f3327905-1873-4e0d-b07c-4e7f88741c3b'}}, u'metadata':{}} 

问题是我的代码需要使用mediaId,如果第400个状态不存在,它会读取它,但由于我似乎无法摆脱这个错误,我需要它跳过它并阅读状态':'接受'和mediaId。

我尝试用它来迭代:

    for status in response:
            if 'status' is 'accepted':
                file_url = fileURL
                external_id = externalId
                media_id = response['mediaId']
                status = response['status']
                results_writer.writerow([ file_url, external_id, 
    media_id, status])
    elif 'status' > 200:
                print "blat"

它只进入400状态,没有做第一个"如果"声明。如何更改它以阅读“已接受的”#39;状态响应?

1 个答案:

答案 0 :(得分:0)

if 'status' is 'accepted':

elif 'status' > 200:

以上两行是将字符串'status'与另一个对象进行比较。第一个始终为False,第二个始终为True。您可能想要比较变量,即if status == 'accepted':

(作为旁注,不要使用is来比较字符串......这些字符串并不总是按照您的想法执行。请改用==。)