这是我的代码,我用过aioftp和asyncio,但是貌似asyncio不能下载ftp而且aioftp的信息很少:
import asyncio, requests
import aiohttp
import urllib.request, urllib.error
import numpy as np
import time
import urllib.request
t1 = time.time()
async def job(session,url):
filename= url.split("/")[-1]
ftp=await session.get(url)
ftpcode=await ftp.read()
with open("new/"+str(filename),'wb') as f:
f.write(ftpcode)
return str(url)
# urllib.request.urlretrieve(url, filename)
async def main(loop,URL):
async with aiohttp.ClientSession()as session:
tasks = [loop.create_task(job(session, URL[_])) for _ in range(2)]
finished, unfinished = await asyncio.wait(tasks)
all_results = [r.result() for r in finished]
print("ALL RESULT:"+str(all_results))
URL=["ftp://ftp.ncbi.nlm.nih.gov/pub/pmc/oa_package/8e/71/PMC5334499.tar.gz",
"ftp://ftp.ncbi.nlm.nih.gov/pub/pmc/oa_package/ad/b5/PMC7444942.tar.gz",
"ftp://ftp.ncbi.nlm.nih.gov/pub/pmc/oa_package/e8/38/PMC8903393.tar.gz",
"ftp://ftp.ncbi.nlm.nih.gov/pub/pmc/oa_package/f3/7d/PMC9130726.tar.gz"]
loop = asyncio.get_event_loop()
loop.run_until_complete(main(loop,URL))
loop.close()
t2 = time.time()
print(int(t2-t1))
如果能帮上忙,我将不胜感激
我用 aioftp 和 asyncio ,但是不工作