Python ftplib и загрузка файловых масок - PullRequest
0 голосов
/ 18 февраля 2020

Я достиг большого прогресса в этом вопросе и теперь могу отлично загрузить 3 из 4 файлов, однако, один файл Wisconsin содержит временные метки, которые я не могу удалить, и меняются изо дня в день, и я ' Я пытаюсь понять, как заставить подстановочные знаки работать с этими значениями с помощью регулярных выражений. Я разместил мой исправленный код ниже:

Примеры имен файлов:

  • BCW_Daily SDP Yield.rpt2020-02-17***-09-02-32***.csv
  • hbc_platelet_daily_02102020.csv
  • MBC_ROLLING_YIELD_02172020.CSV
  • IBC_SDP_Rolling_7Days_021720.CSV

Любая помощь приветствуется.

import datetime
import ftplib
import os

ftpdir =('/home/hospserv/inbound/platelet/')
savedir = "C:/FTP/"
archivedir = "C:/ftparchive/"
os.chdir(savedir)
today = datetime.date.today()
iltoday = datetime.date.today() - datetime.timedelta(days=7)
widate = (f"{today:%Y-%m-%d}")
ildate = (f"{iltoday:%m%d%Y}")
midate = (f"{today:%m%d%Y}")
indate = (f"{today:%m%d%y}")
filenameIN = ('IBC_SDP_Rolling_7Days_'+indate+'.CSV')
filenameWI = ('BCW_SDP_Rolling_7Days.rpt'***+widate+'*'+***'.csv')
filenameIL = ('hbc_platelet_daily_'+ildate+'.csv')
filenameMI = ('MBC_ROLLING_YIELD_'+midate+'.CSV')
dlfiles = [filenameMI,filenameIN,filenameWI,filenameIL]

connection = ftplib.FTP(host='xxx',user='xxx',passwd='xxx')
welcome = ftplib.FTP.getwelcome(connection)
print(welcome)
connection.cwd(ftpdir)

ftp_list = connection.nlst()

print(ftp_list)

for x in dlfiles:
    if x in ftp_list:
        connection.retrbinary("RETR "+x, open(os.path.join(savedir, x), 'wb').write)
    else:
        print(x+' fail')


connection.quit()

1 Ответ

0 голосов
/ 21 февраля 2020

Решено:

# import modules
import fnmatch
import datetime
import ftplib
import os

#define variables
ftpdir =('/home/hospserv/inbound/platelet/')
savedir = "C:/FTP/"
archivedir = "C:/ftparchive/"
filedir = "C:/DailyData/SDPS/"
os.chdir(savedir)
today = datetime.date.today()
iltoday = datetime.date.today() - datetime.timedelta(days=7)
widate = (f"{today:%Y-%m-%d}")
ildate = (f"{iltoday:%m%d%Y}")
midate = (f"{today:%m%d%Y}")
indate = (f"{today:%m%d%y}")
filenameIN = ('IBC_SDP_Rolling_7Days_'+indate+'.CSV')
pattern = ('BCW_SDP_Rolling_7Days.rpt'+widate+'*'+'.csv')
filenameIL = ('hbc_platelet_daily_'+ildate+'.csv')
filenameMI = ('MBC_ROLLING_YIELD_'+midate+'.CSV')

#create FTP connection
connection = ftplib.FTP(xxxxxxx)
connection.cwd(ftpdir)

#generate file list on FTP
ftp_list = connection.nlst()

#create wildcard string for WI file
wistring = fnmatch.filter(ftp_list,pattern)
filenameWI = str(wistring[0])

dlfiles = [filenameMI,filenameIN,filenameIL,filenameWI]

#download files from FTP to local
for x in dlfiles:
    if x in ftp_list:
        connection.retrbinary("RETR "+x, open(os.path.join(savedir, x), 'wb').write)

connection.quit()
...