如何检索文件名并从ftp URL下载一些扩展文件?

时间:2018-09-05 17:01:11

标签: python urllib

我有一些URL。我想从这些URL中获取“ .gbff.gz”文件名并下载这些文件。我正在使用 python3 来做到这一点。

我的计划是首先获取.gbff.gz文件,然后使用'urllib.request.urlretrieve'函数从URL获取文件。我可以使用以下代码检索文件,但无法获取.gbff.gz扩展名。有人可以帮我得到吗?

用于从URL下载文件的代码。

import os
import urllib.request


def download_file(path, url):
    url = url.rstrip()
    head, tail = os.path.split(url)

    filename = os.path.join(path, tail)
    try:
        urllib.request.urlretrieve(url, filename)
    except urllib.request.URLError:
        print("Download Issue: {}".format(url))
    finally:
        print("Download Complete: {}".format(url))
        return filename

但是以某种方式,我在检索名称时遇到了问题。

这是我的尝试:

from urllib.request import urlopen

url = "ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/010/065/GCF_000010065.1_ASM1006v1/"
result = urlopen(url).read().decode('utf-8')

pattern = re.compile('*.gbff.gz')
filelist = pattern.findall(result )
print(filelist)

2 个答案:

答案 0 :(得分:0)

您使用的正则表达式不正确,请尝试使用pattern = re.compile('.*\.gbff.gz')

您的正则表达式是“ Unix shell样式的通配符”表达式,在正则表达式中,*具有不同的含义:将前一个字符0重复n次。前一个字符.与除换行符之外的所有字符匹配。

答案 1 :(得分:0)

regex模式= re.compile(r'[\ w。] *。gbff.gz')仅匹配文件名。