使用tqdm實現下載文件進度條


1、獲取下載鏈接

下載鏈接為:http://fastsoft.onlinedown.net/down/Fcloudmusicsetup2.5.5.197764.exe

2、使用tqdm實現

  • 2.1、從response的headers中獲取文件大小,同時注意:get請求中#stream=True參數的作用是僅讓響應頭被下載,連接保持打開狀態
  • 2.2、以wb模式打開文件
  • 2.3、使用注意調用iter_content,一塊一塊的遍歷要下載的內容,搭配stream=True,此時才開始真正的下載

原始代碼:模板

 1 import requests
 2 from tqdm import tqdm
 3 
 4 def downloadFILE(url,name):
 5     resp = requests.get(url=url,stream=True)
 6     #stream=True的作用是僅讓響應頭被下載,連接保持打開狀態,
 7     content_size = int(resp.headers['Content-Length'])/1024        #確定整個安裝包的大小
 8     with open(name, "wb") as f:
 9         print "安裝包整個大小是:",content_size,'k,開始下載...'
10         for data in tqdm(iterable=resp.iter_content(1024),total=content_size,unit='k',desc=name):
11     #調用iter_content,一塊一塊的遍歷要下載的內容,搭配stream=True,此時才開始真正的下載
12     #iterable:可迭代的進度條 total:總的迭代次數 desc:進度條的前綴
13             f.write(data)
14         print name + "已經下載完畢!"
15 
16 if __name__ == '__main__':
17     url = "需要下載的文件的地址"
18     name = url.split('/')[-1]        #截取整個url最后一段即文件名
19     downloadFILE(url,name)

 

優化代碼:

 1 from tqdm import tqdm
 2 import time,requests
 3 
 4 def downloadFILE(url,name):
 5     resp = requests.get(url=url,stream=True)
 6     content_size = int(resp.headers['Content-Length'])/1024
 7     with open(name, "wb") as f:
 8         print("Pkg total size is:",content_size,'k,start...')
 9         for data in tqdm(iterable=resp.iter_content(1024),total=content_size,unit='k',desc=name):
10             f.write(data)
11         print(name + "download finished!")
12 if __name__ == '__main__':
13     url = "http://fastsoft.onlinedown.net/down/Fcloudmusicsetup2.5.5.197764.exe"
14     name = url.split('/')[-1]
15     downloadFILE(url,name)

效果:在jupyter中

下載的文件:

雙擊下載的文件:

證明下載的文件沒問題!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM