公司正好有个需求,定期从远端ftp下载指定昨天的数据,写了2个函数,一个是连接远端ftp,另一个是定期下载远端数据,用到了ftplib、datetime和正则re三个模块
1.ftplib:连接和下载ftp数据
2.datetime:指定下载日期--每天的前一天
3.re,过滤掉其他日期的数据
以下是代码:
#coding=utf-8 #!/usr/bin/env python from ftplib import FTP import datetime import re def ftpconnect(): ftp_server = 'IP' username = '账号' password = '密码' ftp = FTP() ftp.connect(ftp_server,21) ftp.login(username,password) print ftp.getwelcome() return ftp def downloadfile(): #格式化取到昨天的日期 d = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y%m%d') remotepath = '/bssdata1/interface/yw_files/bak/' #调用ftp连接函数 ftp = ftpconnect() bufsize = 1024 ftp.cwd(remotepath) list = ftp.nlst() for name in list: #正则过滤掉其他日期 L = re.match(d,name) if L: path = '/data/download/' + name f = open(path,'wb') filename = 'RETR '+name ftp.retrbinary(filename,f.write,bufsize) f.close() ftp.quit() downloadfile()