標籤:

Python urllib urlretrieve函數解析

利用urllib.request.urlretrieve函數下載文件

urllib.request.urlretrieve函數解析

urlretrieve(url, filename=None, reporthook=None, data=None)

參數 finename 指定了保存本地路徑(如果參數未指定,urllib會生成一個臨時文件保存數據。)

參數 reporthook 是一個回調函數,當連接上伺服器、以及相應的數據塊傳輸完畢時會觸發該回調,我們可以利用這個回調函數來顯示當前的下載進度。

參數 data 指 post 到伺服器的數據,該方法返回一個包含兩個元素的(filename, headers)元組,filename 表示保存到本地的路徑,header 表示伺服器的響應頭。

下面通過例子來演示一下這個方法的使用,這個例子將一張圖片抓取到本地,保存在此文件夾中,同時顯示下載的進度。

from six.moves import urllibdef Schedule(a, b, c): """ a:已經下載的數據塊 b:數據塊的大小 c:遠程文件的大小 """ per = 100.0*float(a*b)/float(c) if per > 100: per = 100 print("a", a) print("b", b) print("c", c) print({:.2f}%.format(per))url = https://avatars1.githubusercontent.com/u/14261323?s=400&u=150449ce27748c3b23b5175f8c8342c918ae6aa8&v=4local = mylogo.pngfilename, _ = urllib.request.urlretrieve(url, local, Schedule)# (mylogo.png, <http.client.HTTPMessage object at 0x000001FD6491D6D8>) print(filename)# mylogo.png # a 0 # b 8192 # c 38225 # 0.00% # a 1 # b 8192 # c 38225 # 21.43% # a 2 # b 8192 # c 38225 # 42.86% # a 3 # b 8192 # c 38225 # 64.29% # a 4 # b 8192 # c 38225 # 85.72% # a 5 # b 8192 # c 38225 # 100.00%

推薦閱讀:

python 利用KNN分析商戶是否續約
用Python写了个函数,解决酒瓶换酒的问题,求大牛们指点?(问题已解决,感谢各位!)
Python 代碼規範
6、Admin
Python標準庫系列之tarfile模塊

TAG:Python |