Скачивание файлов через 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)
Но он не рекурсивный и без использования регулярных выражений, не совсем то что нужно, однако работает :).