在我們開發過程中可能會遇到在下載文件的時候需要下載超大的文件。那這時候怎么辦才好呢
直接全部下載的話, 文件過大, 可能會造成內存不足等問題。
如果你的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("下載成功")
這種方式下載在下載小文件的時候會很快,但是在下載大點的文件的時候就會變得慢了。
下載超大文件解決方式
使用
requests
的stream
模式。
第一種方式
把文件分成一塊一塊的遍歷要下載的內容。
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("下載成功")