使用python下载文件的方法有很多种;首先要有一个下载链接
downlaod_url = 'http://****/download.file.png'
使用requests模块的get方法,请求url的结果写入文件;
def downlaod1():
import requests
open ('download_file_1.png','wb').write(requests.get(url=downlaod_url).content)
适合小文件,给wget模块的download方法传入两个URL和路径。
def download2():
import wget
wget.download(downlaod_url,'download_file_2.png')
def d3(path,url):
import requests
rc = requests.get(url,stream=True)
with open(path,'wb') as f:
for r in rc:
f.write(r)
def downlaod3():
from multiprocessing.pool import ThreadPool
ThreadPool(3).imap\_unordered(d3,['1.png','2.png','3.png'][downlaod\_url,downlaod\_url,downlaod\_url])
使用urllib3的PoolManager ,跟踪必要的连接池,减少网络开销
使用client发送一个GET请求来获取响应写入文件
def download4():
import urllib3
import shutil
client = urllib3.PoolManager()
with open('downlaod_file_4.png') as f, client.request('GET',downlaod_url) as res:
shutil.copyfileobj(res,f)
asyncio模块主要用于处理系统事件。它围绕一个事件循环进行工作,该事件循环会等待事件发生,然后对该事件作出反应。这个反应可以是调用另一个函数。这个过程称为事件处理。
asyncio模块使用协同程序进行事件处理; 适合下载多个文件;
async def d5(url):
import requests
open ('path','wb').write(requests.get(url).content)
import asyncio
async def run_func(urls):
downlaod5 = [d5(url) for url in urls]
done,appending = await asyncio.wait(downlaod5)
for d in done:
print(d.result())
event_loog = asyncio.get_event_loop()
event_loog.run_until_complete(run_func([downlaod_url,downlaod_url,downlaod_url]))
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。