最近需要定时从FTP服务器上面下载文件,做简要分析,由于是日常工作,工作量大,但是没有技术含量,纯粹是消耗时间,于是决定尝试使用PYTHON写程序,每天自动下载。使用FTP下载的方法很多,使用PYTHON写程序之前用过两种方法,一种是用我的电脑打开FTP,登录之后复制想要的文件;第二种是使用DOS批处理文件来下载,第二种比第一种效率要一些。下面就来说说这些下载方法:
一、我的电脑访问
这种方法最简单,直接在我的电脑地址栏中输入FTP服务器地址,输入用户名和密码,就可以下载所需的文件。缺点是,每天都需要打开一次,输入用户名和密码,一次使用可以,每天都这样还是比较繁琐的。
二、DOS批处理
将FTP服务器地址、用户名、密码,以及文件存放的目录等内容保存好,一运行,就能自动登录,并下载所需的文件。该方法需要写两个bat文件,getFtpData.bat用于保存FTP命令,main.bat用于调用getFtpData.bat文件,使用该方法非常简单。
getFtpData.bat:
open ***.***.***.**
user username password
cd data
get plan1.csv
get plan2.csv
get plan3.csv
bye
main.bat:
ftp -n -s:”getFtpData.bat”
三、PYTHON下载
使用第二种方法时,事先不知道要下载的文件有几个,只知道文件名的命名方式都是plan*.csv的方式,因此不能保证每次下载的文件是否有遗漏。这次使用python写程序下载,自动对文件名称进行判断,确保所需的文件都能下载全:
from ftplib import FTP
import re
ftp = FTP(‘***.***.***.***’)
ftp.login(user=’username’,passwd=’password’)
ftp.cwd(‘data’)
fileList=ftp.nlst()
for item in fileList:
if re.match(‘plan[0-9]{1,2}’,item):
print(‘下载文件:’,item)
with open(item,’wb’) as sffFile:
ftp.retrbinary(‘RETR ‘+item,sffFile.write)
ftp.close()