我是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
来解决此问题,但是我不确定在实际引发错误的情况下如何跳过文件。
答案 0 :(得分:0)
实际上,即使发生错误,您也可以使用try
块使程序继续运行,这是try语句的用途之一。您只需将引发错误的行放在try
块内