如何跳过死掉的 link 并进入下一个?
How to skip a dead link and move onto the next?
我正在尝试让一个程序运行,我可以在其中输入图像 URL 列表并将它们自动下载到一个文件夹中。当批次中某处有一个死的 link 时,就会出现问题。显然,我不想进去手动删除 1000 多个死的 link,所以我只想 "skip" 超过它们。
这是我目前的情况:
import pandas as pd
import urllib.request
import time
def url_to_jpg(i, url, file_path):
filename = 'image-{}.jpg'.format(i)
full_path = '{}{}'.format(file_path, filename)
urllib.request.urlretrieve(url, full_path)
print('{} saved.'.format(filename))
return None
FILENAME = 'images.csv'
FILE_PATH = 'images/'
urls = pd.read_csv(FILENAME)
while True:
try:
for i, url in enumerate(urls.values):
url_to_jpg(i, url[0], FILE_PATH);
except urllib.error.HTTPError:
continue
break
我只是一个初学者,检查异常的最后一部分是我学到的最远的部分。
抱歉代码乱七八糟,我只是匆忙,没有时间。
如果您有空,请替换此代码:
while True:
try:
for i, url in enumerate(urls.values):
url_to_jpg(i, url[0], FILE_PATH);
except urllib.error.HTTPError:
continue
break
与:
for i, url in enumerate(urls.values):
try:
url_to_jpg(i, url[0], FILE_PATH);
except urllib.error.HTTPError:
continue
请注意,在 continue 语句后跟一个 break 语句处于相同的缩进级别是没有意义的,因为 continue 会导致程序流跳回到循环的顶部。你的 while True: 循环实际上并没有做任何事情,除了阻止你的程序退出。
我正在尝试让一个程序运行,我可以在其中输入图像 URL 列表并将它们自动下载到一个文件夹中。当批次中某处有一个死的 link 时,就会出现问题。显然,我不想进去手动删除 1000 多个死的 link,所以我只想 "skip" 超过它们。
这是我目前的情况:
import pandas as pd
import urllib.request
import time
def url_to_jpg(i, url, file_path):
filename = 'image-{}.jpg'.format(i)
full_path = '{}{}'.format(file_path, filename)
urllib.request.urlretrieve(url, full_path)
print('{} saved.'.format(filename))
return None
FILENAME = 'images.csv'
FILE_PATH = 'images/'
urls = pd.read_csv(FILENAME)
while True:
try:
for i, url in enumerate(urls.values):
url_to_jpg(i, url[0], FILE_PATH);
except urllib.error.HTTPError:
continue
break
我只是一个初学者,检查异常的最后一部分是我学到的最远的部分。
抱歉代码乱七八糟,我只是匆忙,没有时间。
如果您有空,请替换此代码:
while True:
try:
for i, url in enumerate(urls.values):
url_to_jpg(i, url[0], FILE_PATH);
except urllib.error.HTTPError:
continue
break
与:
for i, url in enumerate(urls.values):
try:
url_to_jpg(i, url[0], FILE_PATH);
except urllib.error.HTTPError:
continue
请注意,在 continue 语句后跟一个 break 语句处于相同的缩进级别是没有意义的,因为 continue 会导致程序流跳回到循环的顶部。你的 while True: 循环实际上并没有做任何事情,除了阻止你的程序退出。