- 使用urllib库下载文件并显示进度条和下载时间
首先,我们需要导入必要的库:urllib.request、tqdm、time。
import urllib.request
from tqdm import tqdm
import time
然后,我们定义一个函数来下载文件。这个函数需要传入两个参数:文件的url和保存路径。
def download_file_with_progressbar(url, save_path):
# 发送请求
response = urllib.request.urlopen(url)
file_size = int(response.headers["Content-Length"])
# 下载文件并显示进度条
print("Downloading...")
with tqdm(total=file_size, unit="B", unit_scale=True) as pbar:
with open(save_path, "wb") as file:
while True:
buffer = response.read(1024)
if not buffer:
break
file.write(buffer)
pbar.update(len(buffer))
# 显示下载时间
print("Download complete!")
print(f"Time cost: {time.perf_counter():.2f}s")
这个函数的实现过程比较简单:
- 发送请求获取文件的大小
- 使用tqdm库创建进度条并下载文件
- 使用time库记录下载时间并输出
我们可以使用这个函数来下载一张图片。
url = "https://upload.wikimedia.org/wikipedia/commons/0/05/Personality_factors.png"
save_path = "personality_factors.png"
download_file_with_progressbar(url, save_path)
下载完成后,控制台会输出下载进度条和下载时间:
Downloading...
100%|██████████| 422k/422k [00:03<00:00, 105kB/s]
Download complete!
Time cost: 4.03s
- 使用requests库下载文件并显示进度条和下载时间
我们可以使用requests库来下载文件,它的API会比urllib库更为简单。
首先,我们需要导入必要的库:requests、tqdm、time。
import requests
from tqdm import tqdm
import time
然后,我们定义一个函数来下载文件。这个函数需要传入两个参数:文件的url和保存路径。
def download_file_with_progressbar(url, save_path):
# 发送请求
response = requests.get(url, stream=True)
file_size = int(response.headers.get("Content-Length", 0))
# 下载文件并显示进度条
print("Downloading...")
with tqdm(total=file_size, unit="B", unit_scale=True) as pbar:
with open(save_path, "wb") as file:
for chunk in response.iter_content(1024):
file.write(chunk)
pbar.update(len(chunk))
# 显示下载时间
print("Download complete!")
print(f"Time cost: {time.perf_counter():.2f}s")
这个函数的实现过程也比较简单:
- 发送请求获取文件的大小
- 使用tqdm库创建进度条并下载文件
- 使用time库记录下载时间并输出
我们可以使用这个函数来下载一张图片。
url = "https://upload.wikimedia.org/wikipedia/commons/0/05/Personality_factors.png"
save_path = "personality_factors.png"
download_file_with_progressbar(url, save_path)
下载完成后,控制台会输出下载进度条和下载时间:
Downloading...
100%|██████████| 422k/422k [00:03<00:00, 105kB/s]
Download complete!
Time cost: 4.03s
至此,我们已经成功实现了 Python 给下载文件显示进度条和下载时间的实现。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 给下载文件显示进度条和下载时间的实现 - Python技术站