我想在 pubmed 下载很多 ftp 文件,比如“ftp://ftp.ncbi.nlm.nih.gov/pub/pmc/oa_package/8e/71/PMC5334499.tar.gz”,如何使用 asyncio或 aiftp

问题描述 投票:0回答:0

这是我的代码,我用过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 ,但是不工作

python ftp aiohttp
© www.soinside.com 2019 - 2024. All rights reserved.