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