要實現帶進度條的文件下載,可以使用urllib.request
模塊和tqdm
庫。
以下是一個示例代碼:
import urllib.request
from tqdm import tqdm
# 下載文件的URL
url = "https://example.com/file.zip"
# 文件保存路徑
filepath = "file.zip"
# 創建一個進度條對象
progress_bar = tqdm(unit="B", unit_scale=True, unit_divisor=1024)
# 下載文件并顯示進度條
urllib.request.urlretrieve(url, filepath, reporthook=lambda count, block_size, total_size: progress_bar.update(block_size))
# 關閉進度條
progress_bar.close()
在上述代碼中,url
變量存儲了要下載的文件的URL,filepath
變量存儲了要保存的文件路徑。然后,使用urllib.request.urlretrieve()
方法下載文件,并通過reporthook
參數來實現進度條的更新。
reporthook
參數是一個函數,它會在下載過程中被調用。這個函數接收三個參數:count
表示已經下載的數據塊數,block_size
表示每個數據塊的大小,total_size
表示文件的總大小。通過計算已下載的數據塊數和總大小,可以計算出當前的下載進度。
在上述代碼中,使用了tqdm
庫來創建一個進度條對象progress_bar
,并使用update()
方法來更新進度條。unit="B"
表示進度條的單位為字節,unit_scale=True
表示進度條的數字會自動進行單位轉換(如轉換為KB、MB等),unit_divisor=1024
表示單位的劃分基數為1024。
最后,使用progress_bar.close()
方法關閉進度條。
你可以根據需要修改代碼,以適應不同的下載需求。