Python之使用requests處理超大文件


在我們開發過程中可能會遇到在下載文件的時候需要下載超大的文件。那這時候怎么辦才好呢
直接全部下載的話, 文件過大, 可能會造成內存不足等問題。

如果你的requests模塊沒有安裝的話就使用pip install requests安裝一下。

常規下載

import requests

url = 'http://xxx.com/xxx.zip'
response = requests.get(url)
if response.status_code == 200:
    with open('./xx.zip', 'wb') as fp:
        fp.write(response.content)
    print("下載成功")

這種方式下載在下載小文件的時候會很快,但是在下載大點的文件的時候就會變得慢了。

下載超大文件解決方式

使用requestsstream模式。

第一種方式

把文件分成一塊一塊的遍歷要下載的內容。

import requests

url = 'http://xxx.com/xxx.zip'
response = requests.get(url=url, stream=True)
if response.status_code == 200:
    chunk_size = 1024*4
    with open('xxx.zip', 'wb') as f:
        for chunk in response.iter_content(chunk_size=chunk_size):
            if chunk:
                f.write(chunk)
    print("下載成功")

第二種方式

把文件分成一行一行的遍歷要下載的內容。

import requests

url = 'http://xxx.com/xxx.zip'
chunk_size = 1024 * 4
with requests.get(url, stream=True) as req:
    with open('xx.zip', 'wb') as f:
        for chunk in req.iter_content(chunk_size=chunk_size):
            if chunk:
                f.write(chunk)
print("下載成功")


免責聲明!

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



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