亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用python下載大型文件顯示進(jìn)度條和下載時(shí)間的操作代碼

 更新時(shí)間:2022年11月01日 09:19:40   作者:安替-AnTi  
大家都知道下載大型文件時(shí)存在一個(gè)問題,那就是內(nèi)存使用量迅速上升,可能會(huì)造成電腦卡死,所以我們需要換一個(gè)方式進(jìn)行下載,這篇文章主要介紹了使用python下載大型文件的方法顯示進(jìn)度條和下載時(shí)間,需要的朋友可以參考下

推薦閱讀

Python 給下載文件顯示進(jìn)度條和下載時(shí)間的實(shí)現(xiàn)

requets普通方法

下載大型文件時(shí),我們一般都是這樣下載的

import requests
url = ""
r = requests.get(url)
with open('1.mp4', 'wb') as f:
    f.write(r.content)

這樣下載大型文件時(shí)存在一個(gè)問題,那就是內(nèi)存使用量迅速上升,可能會(huì)造成電腦卡死。所以我們需要換一個(gè)方式進(jìn)行下載

流下載

我們可以使用文本流進(jìn)行下載.
requests模塊中有一個(gè)這樣的方法Response.iter_content()
Response響應(yīng)對(duì)象的一個(gè)方法

iter_content(chunk_size=1, decode_unicode=False)

在響應(yīng)數(shù)據(jù)上進(jìn)行重做。當(dāng)stream=True設(shè)置在請(qǐng)求上時(shí),這可以避免立即將內(nèi)容讀入內(nèi)存以獲得大響應(yīng)。塊大小是它應(yīng)該讀入內(nèi)存的字節(jié)數(shù)。這不一定是每個(gè)返回的項(xiàng)目的長(zhǎng)度,因?yàn)榻獯a可以進(jìn)行。

chunk_size必須是類型 int 或 None。值為None時(shí)會(huì)因stream的值而異。stream-True將讀取數(shù)據(jù)的字塊大小與接收的區(qū)塊相同。如果stream=False,則數(shù)據(jù)將作為單個(gè)塊返回。

如果decode_unicode設(shè)置為真,響應(yīng)內(nèi)容將根據(jù)使用最佳編碼進(jìn)行解碼。

需要在get請(qǐng)求上設(shè)置參數(shù)stream為True,它不會(huì)立即開始下載,當(dāng)使用iter_content遍歷內(nèi)容或訪問內(nèi)容屬性時(shí)才開始下載。

代碼實(shí)現(xiàn):

url = ""
r = requests.get(url, headers=header, stream=True)
with open('1.mp4', "wb") as f:
        for chunk in r.iter_content(chunk_size=1024):
            if chunk:
                f.write(chunk)

加個(gè)進(jìn)度條模塊

# 進(jìn)度條模塊
def progressbar(url,path):
    if not os.path.exists(path):   # 看是否有該文件夾,沒有則創(chuàng)建文件夾
         os.mkdir(path)
    start = time.time() #下載開始時(shí)間
    response = requests.get(url, stream=True) #stream=True必須寫上
    size = 0    #初始化已下載大小
    chunk_size = 1024  # 每次下載的數(shù)據(jù)大小
    content_size = int(response.headers['content-length'])  # 下載文件總大小
    try:
        if response.status_code == 200:   #判斷是否響應(yīng)成功
            print('Start download,[File size]:{size:.2f} MB'.format(size = content_size / chunk_size /1024))   #開始下載,顯示下載文件大小
            filepath = path+'\name.extension name'  #設(shè)置圖片name,注:必須加上擴(kuò)展名
            with open(filepath,'wb') as file:   #顯示進(jìn)度條
                for data in response.iter_content(chunk_size = chunk_size):
                    file.write(data)
                    size +=len(data)
                    print('\r'+'[下載進(jìn)度]:%s%.2f%%' % ('>'*int(size*50/ content_size), float(size / content_size * 100)) ,end=' ')
        end = time.time()   #下載結(jié)束時(shí)間
        print('Download completed!,times: %.2f秒' % (end - start))  #輸出下載用時(shí)時(shí)間
    except:

現(xiàn)原理其實(shí)很簡(jiǎn)單,我們一般下載東西使用的requests.get(url).content的方法下載來的文件是二進(jìn)制文件,我們只要通過for循環(huán)每次下載1024kb,到最后獲取文件的總大小,即可完成我們的功能實(shí)現(xiàn)了!.

參考文獻(xiàn)

https://blog.csdn.net/m0_46778548/article/details/121180585

https://blog.csdn.net/weixin_43347550/article/details/105248223

到此這篇關(guān)于使用python下載大型文件的方法顯示進(jìn)度條和下載時(shí)間的文章就介紹到這了,更多相關(guān)python下載文件顯示進(jìn)度條和下載時(shí)間內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python使用Paramiko模塊實(shí)現(xiàn)遠(yuǎn)程文件拷貝

    python使用Paramiko模塊實(shí)現(xiàn)遠(yuǎn)程文件拷貝

    這篇文章主要為大家詳細(xì)介紹了python使用Paramiko模塊實(shí)現(xiàn)遠(yuǎn)程文件拷貝,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python?虛擬環(huán)境的價(jià)值和常用命令詳解

    Python?虛擬環(huán)境的價(jià)值和常用命令詳解

    在實(shí)際項(xiàng)目開發(fā)中,我們通常會(huì)根據(jù)自己的需求去下載各種相應(yīng)的框架庫(kù),如Scrapy、Beautiful?Soup等,但是可能每個(gè)項(xiàng)目使用的框架庫(kù)并不一樣,或使用框架的版本不一樣,今天給大家分享下Python?虛擬環(huán)境的價(jià)值和常用命令,感興趣的朋友一起看看吧
    2022-05-05
  • 詳解如何列出已安裝的Python包

    詳解如何列出已安裝的Python包

    處理 Python 項(xiàng)目可能需要列出已安裝的 Python 包,以便管理依賴項(xiàng)、檢查更新或與其他人共享項(xiàng)目需求,在這篇文章中,我們將研究多種用于列出系統(tǒng)上安裝的 Python 包的技術(shù)
    2023-10-10
  • python 把文件中的每一行以數(shù)組的元素放入數(shù)組中的方法

    python 把文件中的每一行以數(shù)組的元素放入數(shù)組中的方法

    下面小編就為大家分享一篇python 把文件中的每一行以數(shù)組的元素放入數(shù)組中的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 安裝不同版本的tensorflow與models方法實(shí)現(xiàn)

    安裝不同版本的tensorflow與models方法實(shí)現(xiàn)

    這篇文章主要介紹了安裝不同版本的tensorflow與models方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • ndarray的轉(zhuǎn)置(numpy.transpose()與A.T命令對(duì)比分析)

    ndarray的轉(zhuǎn)置(numpy.transpose()與A.T命令對(duì)比分析)

    這篇文章主要介紹了ndarray的轉(zhuǎn)置(numpy.transpose()與A.T命令對(duì)比分析),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python列表元素常見操作簡(jiǎn)單示例

    Python列表元素常見操作簡(jiǎn)單示例

    這篇文章主要介紹了Python列表元素常見操作,結(jié)合簡(jiǎn)單示例形式分析了Python針對(duì)列表元素的打印、添加、刪除、修改、排序等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2019-10-10
  • python如何實(shí)現(xiàn)word批量轉(zhuǎn)HTML

    python如何實(shí)現(xiàn)word批量轉(zhuǎn)HTML

    這篇文章主要介紹了python如何實(shí)現(xiàn)word批量轉(zhuǎn)HTML,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-09-09
  • 詳解在Python中創(chuàng)建條形圖追趕動(dòng)畫

    詳解在Python中創(chuàng)建條形圖追趕動(dòng)畫

    動(dòng)畫是使可視化更具吸引力和用戶吸引力的好方法。它幫助我們以有意義的方式展示數(shù)據(jù)可視化。Matplotlib是一個(gè)非常流行的數(shù)據(jù)可視化庫(kù),通常用于數(shù)據(jù)的圖形表示以及使用內(nèi)置函數(shù)的動(dòng)畫。本文將用Matplotlib繪制條形圖追趕動(dòng)畫,需要的可以參考一下
    2022-03-03
  • Python中Matplotlib繪圖保存圖片時(shí)調(diào)節(jié)圖形清晰度或分辨率的方法

    Python中Matplotlib繪圖保存圖片時(shí)調(diào)節(jié)圖形清晰度或分辨率的方法

    有時(shí)我們?cè)谑褂胢atplotlib作圖時(shí),圖片不清晰或者圖片大小不是我們想要的,這篇文章主要給大家介紹了關(guān)于Python中Matplotlib繪圖保存圖片時(shí)調(diào)節(jié)圖形清晰度或分辨率的相關(guān)資料,需要的朋友可以參考下
    2024-05-05

最新評(píng)論