【发布时间】:2019-10-10 17:38:43
【问题描述】:
我有一个从链接下载图像的脚本。假设脚本由于某种原因被终止,那么我想保存图像已下载的点并从上次保存的点再次恢复
我已经制作了下载脚本并尝试使用pickle保存程序的状态到现在
import pandas as pd
import requests as rq
import os,time,random,pickle
import csv
data=pd.read_csv("consensus_data.csv",usecols=["CaptureEventID","Species"])
z=data.loc[ data.Species.isin(['buffalo']), :]
df1=pd.DataFrame(z)
data_2=pd.read_csv("all_images.csv")
df2=pd.DataFrame(data_2)
df3=pd.merge(df1,df2,on='CaptureEventID')
p=df3.to_csv('animal_img_list.csv',index=False)
# you need to change the location below
data_final = pd.read_csv("animal_img_list.csv")
output=("/home/avnika/data_serengeti/url_op")
mylist = []
for i in range(0,100):
x = random.randint(1,10)
mylist.append(x)
print(mylist)
for y in range(len(mylist)):
d=mylist[y]
print(d)
file_name = data_final.URL_Info
print(len(file_name))
for file in file_name:
image_url='https://snapshotserengeti.s3.msi.umn.edu/'+file
f_name=os.path.split(image_url)[-1]
print(f_name)
r=rq.get(image_url)
with open(output+"/"+f_name, 'wb') as f:
f.write(r.content)
time.sleep(d)
with open("/home/avnika/data_serengeti","wb") as fp:
pickle.dump(r,fp)
with open("/home/avnika/data_serengeti","rb") as fp:
pic_obj=pickle.load(fp)
假设我必须从一个 URL 下载 4000 张图像。我成功下载了 1000 张图片,但由于某些网络问题,我的脚本崩溃了。所以我希望当脚本重新启动时,它应该从图像编号 1001 开始下载。目前,如果脚本重新启动,它会再次从图像编号 1 重新开始。加载泡菜对象后如何再次运行循环?
【问题讨论】:
-
我认为不可能,但你可以做的是,检查图像的文件名,如果已经下载,则跳过它。
标签: python python-3.x pandas python-requests