def download(url, target, expected_hash):
if filesystem.calculate_hash(target) == expected_hash:
return
count = 0
while filesystem.calculate_hash(TEMP_FILE) != expected_hash:
count += 1
if count > 5:
os.remove(TEMP_FILE)
raise OSError("Aborting download of %s after 5 unsuccessful attempts" % url)
try:
http_client.get(url).raise_for_status().download_to(TEMP_FILE)
except OSError:
pass
# If it already exists the rename will fail
try:
os.remove(target)
except OSError:
pass
os.rename(TEMP_FILE, target)
评论列表
文章目录