Скачивание файлов через ftp по маске

Как можно реализовать поиск по всем директориям и скачивание файлов на ftp сервере соответствующих маске?

Идеи:

import ftplib, re, os

FTP_HOST = ''
FTP_USER = ''
FTP_PASS = ''
ftp = ftplib.FTP(FTP_HOST, FTP_USER, FTP_PASS)
ftp.encoding = "utf-8"

pattern = r'LAST_REPORT_\d+\.txt'
pattern = re.compile(pattern)
root = ftp.cwd('/')

for folder, subdirs, files in os.walk(root):
    for filename in files:
        if pattern.match(filename):
            with open(filename, "wb") as file:
                ftp.retrbinary("RETR %s" % filename, file.write)


ftp.quit()

Так же рассматривал вариант:

pattern = 'LAST_REPORT'
filesineed = [filename for filename in ftp.nlst() if pattern in filename]

for filename in filesineed:
    local_filename = os.path.join(os.getcwd(), filename)
    with open(local_filename, 'wb') as f:
        print('downloading {}...'.format(filename))
        ftp.retrbinary('RETR %s' % filename, f.write)

Но он не рекурсивный и без использования регулярных выражений, не совсем то что нужно, однако работает :).


Ответы (0 шт):