def download(name, cache_dir=os.path.join(‘..‘, ‘data‘))

文章介绍了如何使用Python的requests库从DATA_HUB下载文件,并处理文件存在时的缓存策略,同时确保了HTTPS请求的SSL证书验证。
摘要由CSDN通过智能技术生成
def download(name, cache_dir=os.path.join('..', 'data')): #@save
"""下载一个DATA_HUB中的文件,返回本地文件名"""
#断言,若name 不在DATAHUB中,则抛出异常
assert name in DATA_HUB, f"{name} 不存在于{DATA_HUB}"         
url, sha1_hash = DATA_HUB[name] 
#exist_ok=true 若文件存在,则保持,不抛出异常
os.makedirs(cache_dir, exist_ok=True)
# [-1]取最后一个元素;split:根据’/‘将url分割成数组
fname = os.path.join(cache_dir, url.split('/')[-1])
if os.path.exists(fname):
sha1 = hashlib.sha1()
with open(fname, 'rb') as f:
while True:
# 1048526 B = 1MB 每次读取1MB
data = f.read(1048576)
if not data:
break
# 将data添加到sha1中
sha1.update(data)
if sha1.hexdigest() == sha1_hash:
return fname # 命中缓存

print(f'正在从{url}下载{fname}...')
r = requests.get(url, stream=True, verify=True)
with open(fname, 'wb') as f:
f.write(r.content)
return fname

# url 就是请求的路径
# stream = True,就是 默认情况下,当你进行网络请求后,响应体会立即被下载。你可以通过 stream 参数覆盖这个行为,推迟下载响应体直到访问 Response.content 属性 接着看截图
# verify=True Requests 可以为 HTTPS 请求验证 SSL 证书,就像 web 浏览器一样。要想检查某个主机的 SSL 证书,你可以使用 verify 参数. 如果你将 verify 设置为 False,Requests 也能忽略对 SSL 证书的验证
————————————————
原文链接:https://blog.csdn.net/jjw_zyfx/article/details/120049350

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值