+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

从FTP共享下载多个文件?[复制]

发布于2021-02-28 01:49     阅读(833)     评论(0)     点赞(3)     收藏(5)


0

1

2

3

4

5

6

7

我知道这个问题已经被问过多次了,但是到目前为止,没有一个解决方案真正可行。

我想将一些文件拉到基于URL的Web工具上

这似乎是FTP共享,但使用

import ftplib
url = 'ftp://ftp.ebi.ac.uk/pub/databases/metabolights/studies/public/MTBLS1167'
ftp = ftplib.FTP(url)

6 ftp = ftplib.FTP(url)gaierror:[Errno -2]名称或服务未知

使用以下命令可以很容易地下载单个文件wget

wget.download(url+'/'+filename, out=ms_dir)

但是,的python实现wget并没有实现Linux工具的所有功能。因此,类似的东西wget.download(url+'/*.*', out=ms_dir)不起作用。

因此,我需要首先提取要下载的文件列表,然后逐个下载文件。我尝试了beautifulsoup,请求,urllib。但是,对于一个可能在十年前解决了一百万次或根本无法解决的问题,所有解决方案似乎都过于复杂。

但是,例如

import requests
response = requests.get(url, params=params)

InvalidSchema:找不到用于...的连接适配器

import urllib3
http = urllib3.PoolManager()
r = http.request('GET', url)

URLSchemeUnknown:不支持的URL方案ftp

等等。我不确定在这里我做错了什么。


解决方案


import ftplib
from urllib.parse import urlparse

def get_files_from_ftp_directory(url):
    url_parts = urlparse(url)
    domain = url_parts.netloc
    path = url_parts.path
    ftp = ftplib.FTP(domain)
    ftp.login()
    ftp.cwd(path)
    filenames = ftp.nlst()
    ftp.quit()
    return filenames

get_files_from_ftp_directory(URL)

谢谢,我使用的是整个URL,而不仅仅是登录域。我使用此函数获取文件名,然后使用更舒适的wget api下载文件名。

0

1

2

3

4

5



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/861632/d1cccb856867db84d47f/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

3 0
收藏该文
已收藏

评论内容:(最多支持255个字符)