将项目添加回 for 循环
Add item back to for loop
我正在编写一些代码,但我不知道如何创建我想要的行为。我想遍历一个列表,并提取一些数据。在我的真实代码中,代码旨在提取一些数据,但数据是在不同时间发布的,并不是以可预测的方式发布的。如果出现错误,我想做的是将可迭代对象添加回列表中。
示例代码
my_list = ['cat', 'dog', 'bird', 'fish']
for animal in my_list:
try:
get.('www.somerandomurl_{}.com'.format(animal))
print("good work!")
except:
add item back to list, try again once the rest of the list is compete
有办法吗?甚至可能告诉 python 等待 n 分钟再试一次有错误的项目
您可以使用一个循环 运行 直到您获取所有项目,在每个 运行 select (和弹出)一个元素:
- 如果成功:你很好
- 如果失败:将其放回要尝试的值中
from requests import get
from collections import deque
my_list = ['cat', 'dog', 'bird', 'fish']
to_fetch = deque(my_list)
while to_fetch:
to_try = to_fetch.popleft()
try:
res = get('www.somerandomurl_{}.com'.format(to_try))
print("good work!", res.text)
except Exception:
print("Failed", to_try, "but will try again later")
to_fetch.append(to_try)
我正在编写一些代码,但我不知道如何创建我想要的行为。我想遍历一个列表,并提取一些数据。在我的真实代码中,代码旨在提取一些数据,但数据是在不同时间发布的,并不是以可预测的方式发布的。如果出现错误,我想做的是将可迭代对象添加回列表中。
示例代码
my_list = ['cat', 'dog', 'bird', 'fish']
for animal in my_list:
try:
get.('www.somerandomurl_{}.com'.format(animal))
print("good work!")
except:
add item back to list, try again once the rest of the list is compete
有办法吗?甚至可能告诉 python 等待 n 分钟再试一次有错误的项目
您可以使用一个循环 运行 直到您获取所有项目,在每个 运行 select (和弹出)一个元素:
- 如果成功:你很好
- 如果失败:将其放回要尝试的值中
from requests import get
from collections import deque
my_list = ['cat', 'dog', 'bird', 'fish']
to_fetch = deque(my_list)
while to_fetch:
to_try = to_fetch.popleft()
try:
res = get('www.somerandomurl_{}.com'.format(to_try))
print("good work!", res.text)
except Exception:
print("Failed", to_try, "but will try again later")
to_fetch.append(to_try)