如何解决下载Google驱动器文件时引发的错误

时间:2019-06-03 15:40:45

标签: python google-api

我是python编程的新手,并且已经设置了一个使用google drive API来下载存储在该驱动器上的20张最新图片的程序。大部分情况下一切正常(凭据工作,下载工作),但是偶尔我会遇到一个文件尝试下载,并且Google会引发500或503错误。引发此错误时,程序将错误打印到屏幕上,然后退出。我正在尝试获取它来打印错误,但随后移至下一个文件。

由于我偶尔会收到一次错误(该软件每天运行一次),因此我很难测试任何解决方案,因为每次测试时我都无法复制问题。

文件下载代码如下:

def downloadImage(fh, request, filename):
    print(filename)
    downloader = MediaIoBaseDownload(fh, request)
    done = False
    while done is False:
        status, done = downloader.next_chunk()
        #print("Download %d%%." % int(status.progress() * 100))
    try:
        with Image.open(folder + filename) as image:
            orientation = 274
            exif = image._getexif()
            if exif:
                exif = dict(exif.items())
                #print(exif)
                if exif[orientation] == 1:
                    print("EXIF says it's horizontal. Sending to build... >")
                    buildHorizontal(folder + filename)
                else:
                    resize_and_crop(folder + filename, folder + filename, (1920,1080), 'middle')
    except Exception as e:
        print("excptn:"+str(e))
        with Image.open(folder + filename) as image:
            w, h = image.size
            print( str(w) + " || " + str(h) )
            if int(h) < int(w) :
                print("It's a horizontal image. Sending to build... >")
                buildHorizontal(folder + filename)

我认为我可以通过在try:代码块中添加while done is False来解决此问题,但是我不确定在实际引发错误的情况下如何跳过文件。

1 个答案:

答案 0 :(得分:0)

实际上,即使发生错误,您也可以使用try块使程序继续运行,这是try语句的用途之一。您只需将引发错误的行放在try块内