-2
在这里,我试图从网址列表(largest_images)下载图像。我只想下载一张图片。当图像下载成功时,我希望for循环立即停止。我很难弄清楚在哪里把break语句放在下面的代码中。当文件下载完成时打破for循环
for image_url in largest_images:
# SOME VARIABLES
timeout = 20
response = None
file_name = md5(image_url)
file_path = os.path.join(dst_dir, file_name)
try_times = 0
while True:
try:
try_times += 1
response = requests.get(image_url, headers=headers, timeout=timeout)
if response.status_code == 200:
print "Downloading: %s" % image_url
with open(file_path, 'wb') as f:
for chunk in response.iter_content(1024):
f.write(chunk)
response.close()
file_type = imghdr.what(file_path)
# if file_type is not None:
if file_type in ["jpg", "jpeg", "png", "bmp"]:
new_file_name = "{}.{}".format(file_name,file_type)
new_file_path = os.path.join(dst_dir, new_file_name)
shutil.move(file_path, new_file_path)
print ("## OK: {} {}".format(new_file_name, image_url))
break (I have added a break statement here, but its not working)
else:
os.remove(file_path)
print ("## Err: {}".format(image_url))
break
except Exception as e:
if try_times < 3:
continue
if response:
response.close()
print ("## Fail: {} {}".format(image_url, e.args))
break
只要取出除了一个,并保持在尝试中的一个 –