自制一個python下載文件的進度條模塊!

我們在做Python爬蟲腳本的時候,往往希望在運行的過程中可以實時查看到我的下載進度!之前我也一直想實現這個功能(絕對不是爲了炫(裝)耀(B)),也查看了很多博客但是各種解決方案都不是很滿意(當然,progressBar和tqdm這兩個庫都是可選擇也可操作的),很多時候我們需要一些定製功能的時候就需要考慮自己實現,這個功能其實很簡單,我們可以自己去實現它!
這裏寫圖片描述
實現辦法
進度條最大的問題是實現輸出在一行,且實時變化,不要換行。有的同學可能已經想到了,有2種辦法:
一個是來自sys庫的sys.stdout.write()函數
這裏寫圖片描述
可以替代print的一個函數,具體的大家可以自行查找相關資料哦,我們今天用第二種辦法:
print本身就有可以實現的辦法,比如下面的代碼,大家可以運行下!

import time
for i in range(10):
    print('\r'+'>'*i,end='')

這段代碼會生成一個緩緩前行的‘>’,是不是很簡單。重點是’ ‘和end參數, 是跳到行開頭,end=”是將原本的print完成後換行改爲不換行,這樣就實現了這個小功能
那麼,進度條完成了,怎麼和我們的代碼結合,比如我們下載1個10M的東東,怎麼控制每1M顯示10%呢,這就用到了我們爬蟲最常用的一個庫requests庫的一個功能了
用requests庫相關功能實現分段下載
一般情況下我們下載文件使用的是requests.get(url).content的方法來下載文件的二進制格式,然後在保存即可!這裏我們添加一個參數steam=True,在對下載的文件大小進行指定,比如每次下載1024b,最後獲取文件的總大小,即可完成我們的功能實現了!來看下面的代碼:
這裏寫圖片描述
這個函數就實現了通過文件的url+保存路徑和名字2個參數,下載文件,並提供一個簡單的進度條以及消耗時間的功能,我們下載個文件,試試效果:
這裏寫圖片描述
ok~是不是很簡單~~大家也可以在裏面按自己的喜好添加各種元素哦!

如果有更好的辦法,也喜歡在評論區發一下,大家一起討論下!

發佈了32 篇原創文章 · 獲贊 41 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章