Python:提高函数打印输出的错误

时间:2018-06-18 19:12:31

标签: python python-2.7

我正在使用InstagramAPI module from this github创建一个在特定时间发布图片的脚本。下面的代码段显示了部分代码:

Insta = InstagramAPI(account_name, password)
Insta.login()
InstagramAPI.uploadPhoto(post_path, caption)
InstagramAPI.logout()

这样可以正常工作,除非图片格式错误。如果格式错误,则不会发布任何内容并打印出来:

Request return 400 error!
{u'status': u'fail', u'message': u"Uploaded image isn't in the right format"}

我有一个函数,如果格式不正确,将重新调整大小。 但是,它只是打印而不是错误。因此,我不能把它放在试试/除外。因此,如果文件格式不正确,则只会跳过并发布任何内容。

有没有人知道我可以让我的代码将打印输出保存到变量的方式,以便我可以检查它是否包含“上传的图像格式不正确”并且如果是这样会引发错误?

1 个答案:

答案 0 :(得分:1)

InstagramAPI.uploadPhoto()如果尝试发布您的照片失败,则会返回False。你可以这样做:

Insta = InstagramAPI(account_name, password)
Insta.login()
success = Insta.uploadPhoto(post_path, caption)
if not success:
    resizeImage()  # your resize image logic
else:
    Insta.logout()

这将检查是否已成功上传,如果没有,您可以调整图片大小并尝试重新上传。

在你的评论中,你说它无论成功与否都会返回False,但我觉得很难相信。在uploadPhoto()我们看到了这一点:

    response = self.s.post(self.API_URL + "upload/photo/", data=m.to_string())
    if response.status_code == 200:
        if self.configure(upload_id, photo, caption):
            self.expose()
    return False

如果响应代码不等于200或者self.configure()返回falsey值,则只返回False。

self.configure()仅生成请求正文并调用:

return self.SendRequest('media/configure/?', self.generateSignature(data))
如果您对Instagram API的请求成功,

将返回true:

if response.status_code == 200:
    self.LastResponse = response
    self.LastJson = json.loads(response.text)
    return True