最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python如何使用Requests下載文件并且顯示進(jìn)度條

 更新時(shí)間:2024年12月17日 09:35:45   作者:LLLibra146  
這篇文章主要為大家詳細(xì)介紹了如何使用?Requests?下載文件并且顯示進(jìn)度條,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

引言

本篇文章來(lái)分享一下如何使用 Requests 下載文件并且顯示進(jìn)度條。

下載文件

說(shuō)到下載文件,大家可能一下子就能寫出以下的代碼:

import requests

total = 10485
url = f'https://speed.cloudflare.com/__down?during=download&bytes={total}'
# 上面的 URL 是 cloudflare 的測(cè)試鏈接,可以傳入想要下載的長(zhǎng)度
res = requests.get(url)

with open('test.file', 'wb') as file:
    file.write(res.content)
print('下載完成')

這樣寫當(dāng)然沒(méi)問(wèn)題,但是有幾個(gè)問(wèn)題:

  • 文件內(nèi)容都放到了內(nèi)存中,并且沒(méi)有下載進(jìn)度
  • 如果文件很大,不光下載時(shí)間很久,而且占用很大內(nèi)存無(wú)法釋放,只有下載完成后才能釋放
  • 沒(méi)有下載進(jìn)度,不知道下載是否還在進(jìn)行中,不知道何時(shí)結(jié)束,不知道下載的狀態(tài)

Requests 分塊下載

為了解決上面的問(wèn)題,我們需要用到流式傳輸,在使用 Requests 進(jìn)行下載時(shí),只需要將 stream 設(shè)置 True,即可開啟流式傳輸,Requests 不會(huì)從服務(wù)器一次性將內(nèi)容全部下載到本地,而是根據(jù)需求分塊的從服務(wù)器獲取內(nèi)容,然后對(duì)內(nèi)容進(jìn)行處理。

舉個(gè)例子:

import json
import requests

r = requests.get('https://httpbin.org/stream/20', stream=True)

for line in r.iter_lines():

    # filter out keep-alive new lines
    if line:
        decoded_line = line.decode('utf-8')
        print(json.loads(decoded_line))

給下載加上進(jìn)度條

為了解決下載的時(shí)候沒(méi)有進(jìn)度像是卡住的問(wèn)題,可以在下載的時(shí)候加上進(jìn)度條, 并且分塊進(jìn)行下載,而不是將數(shù)據(jù)全部放到內(nèi)存中,防止占用過(guò)大的內(nèi)存。

進(jìn)度條我們使用tqdm 庫(kù),tqdm 庫(kù)是一個(gè)功能強(qiáng)大且極具實(shí)用性的 Python 進(jìn)度條工具,它能夠以直觀的可視化進(jìn)度條形式清晰展示循環(huán)迭代、文件處理等各類任務(wù)的執(zhí)行進(jìn)度,極大提升程序運(yùn)行狀態(tài)的可視性與用戶體驗(yàn),廣泛應(yīng)用于數(shù)據(jù)處理、機(jī)器學(xué)習(xí)訓(xùn)練等眾多領(lǐng)域,方便開發(fā)者與使用者實(shí)時(shí)掌握任務(wù)進(jìn)展情況并有效優(yōu)化程序運(yùn)行流程。

先安裝:

poetry add tqdm
# 或者
pip install tqdm

安裝好后,對(duì)之前的下載代碼進(jìn)行優(yōu)化,并且使用流式傳輸方法改造一下:

import requests
from tqdm import tqdm

total = 104857600  # 100M
url = f'https://speed.cloudflare.com/__down?during=download&bytes={total}'
res = requests.get(url, stream=True)
# 上面的 URL 是 cloudflare 的測(cè)試鏈接,可以傳入想要下載的長(zhǎng)度,如果是正常的下載文件,需要通過(guò)下面的代碼來(lái)獲取總長(zhǎng)度
# file_size = int(response.headers.get("Content - Length", 0))
print(total)
with open('test.file', 'wb') as file, tqdm(
        desc='test.file',
        total=total,
        unit='iB',
        unit_scale=True,
        unit_divisor=1024,
) as bar:
    for data in res.iter_content(chunk_size=1024):
        size = file.write(data)
        bar.update(size)

下載效果:

可以看到,不光有了進(jìn)度條,還有了下載速度,而且還有總大小和已經(jīng)下載的大小和預(yù)估時(shí)間,信息是相當(dāng)全面了。

總結(jié)

上面的方法在下載大文件時(shí)非常有用,不僅可以清楚地看到下載的進(jìn)度,還能避免一次性將整個(gè)文件讀取到內(nèi)存中,從而節(jié)省內(nèi)存資源,提高程序的穩(wěn)定性和效率。

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

相關(guān)文章

  • Python實(shí)現(xiàn)的求解最大公約數(shù)算法示例

    Python實(shí)現(xiàn)的求解最大公約數(shù)算法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的求解最大公約數(shù)算法,涉及Python數(shù)學(xué)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • Python Selenium 搜索和點(diǎn)擊示例代碼

    Python Selenium 搜索和點(diǎn)擊示例代碼

    使用Python Selenium實(shí)現(xiàn)Google搜索與點(diǎn)擊,需安裝庫(kù)及瀏覽器驅(qū)動(dòng),通過(guò)顯式等待確保結(jié)果加載,支持精準(zhǔn)/隨機(jī)點(diǎn)擊,處理元素遮擋及廣告過(guò)濾,本文給大家介紹Python Selenium 搜索和點(diǎn)擊,感興趣的朋友一起看看吧
    2025-06-06
  • python基于python-docx庫(kù)自動(dòng)化處理Word文檔的完整指南

    python基于python-docx庫(kù)自動(dòng)化處理Word文檔的完整指南

    python-docx是一款純Python實(shí)現(xiàn)的第三方庫(kù),專門用于創(chuàng)建和修改Microsoft?Word的.docx格式文檔,下面我們就來(lái)看看如何使用python-docx庫(kù)自動(dòng)化處理Word文檔吧
    2026-01-01
  • 利用Python求陰影部分的面積實(shí)例代碼

    利用Python求陰影部分的面積實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于利用Python求陰影部分面積的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Python網(wǎng)絡(luò)編程詳解(常用庫(kù)、代碼案例、環(huán)境搭建等)

    Python網(wǎng)絡(luò)編程詳解(常用庫(kù)、代碼案例、環(huán)境搭建等)

    網(wǎng)絡(luò)編程是Python中非常重要的一個(gè)領(lǐng)域,涉及到的常用庫(kù)包括socket、asyncio、http、requests、websockets等,下面我們將從常用庫(kù)、庫(kù)的詳細(xì)用法、完整代碼案例、依賴項(xiàng)、環(huán)境搭建、注意事項(xiàng)和常見(jiàn)問(wèn)題等方面,對(duì)Python網(wǎng)絡(luò)編程進(jìn)行詳細(xì)講解,需要的朋友可以參考下
    2025-03-03
  • python如何實(shí)現(xiàn)單鏈表的反轉(zhuǎn)

    python如何實(shí)現(xiàn)單鏈表的反轉(zhuǎn)

    這篇文章主要介紹了python如何實(shí)現(xiàn)單鏈表的反轉(zhuǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 關(guān)于Python的異常捕獲和處理

    關(guān)于Python的異常捕獲和處理

    程序在運(yùn)行過(guò)程當(dāng)中,不可避免的會(huì)出現(xiàn)一些錯(cuò)誤,比如:使用了沒(méi)有賦值過(guò)的變量,使用了不存在的索引,一個(gè)數(shù)字除以0,這些錯(cuò)誤在程序中,我們稱其為異常,那么如何處理這些異常呢,今天我們就來(lái)看一看
    2023-04-04
  • 簡(jiǎn)單的python后臺(tái)管理程序

    簡(jiǎn)單的python后臺(tái)管理程序

    這篇文章主要為大家詳細(xì)介紹了簡(jiǎn)單python后臺(tái)管理程序的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 已安裝tensorflow-gpu,但keras無(wú)法使用GPU加速的解決

    已安裝tensorflow-gpu,但keras無(wú)法使用GPU加速的解決

    今天小編就為大家分享一篇已安裝tensorflow-gpu,但keras無(wú)法使用GPU加速的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python利用手勢(shì)識(shí)別實(shí)現(xiàn)貪吃蛇游戲

    Python利用手勢(shì)識(shí)別實(shí)現(xiàn)貪吃蛇游戲

    想必大家都玩過(guò)貪吃蛇的游戲吧:通過(guò)操縱蛇的移動(dòng)方向能夠讓蛇吃到隨機(jī)出現(xiàn)的食物,吃到的食物越多,蛇就會(huì)變得越長(zhǎng)。本文將使用手勢(shì)識(shí)別來(lái)完成貪吃蛇這個(gè)簡(jiǎn)單的游戲,感興趣的可以了解一下
    2022-04-04

最新評(píng)論

北碚区| 招远市| 乌兰浩特市| 红原县| 奉化市| 塔河县| 梓潼县| 东乡县| 梅州市| 山丹县| 富源县| 松滋市| 定州市| 广安市| 甘南县| 土默特右旗| 潢川县| 泾川县| 多伦县| 新安县| 浦东新区| 崇文区| 府谷县| 玉山县| 思南县| 宁化县| 浏阳市| 巫溪县| 纳雍县| 三原县| 永城市| 平利县| 武定县| 衡东县| 分宜县| 白城市| 德化县| 海伦市| 乐东| 阜南县| 绥阳县|