公司正好有个需求,定期从远端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()