这几天搭建apache环境,网上搜索找到了mirrors.sohu.com这个站点,内容比较全,也正好练习python 就简答写了个一个ftp下载工具,比较简单,不过满足日常需求是没有任何问题,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#!/usr/bin/env python #This is for python 2.7 import ftplib FTPSERVER = 'mirrors.sohu.com' def downfile_conn_ftp(path, username, email): ftp = ftplib.FTP(path, username, email) files = ftp.dir() print files #download file ftp.cwd('/apache') list = ftp.nlst() #for name in enumerate(list,1): # print name #f = open('/tmp/httpd-2.4.12.tar.bz2', 'wb') #ftp.retrbinary("RETR " + "httpd-2.4.12.tar.bz2", f.write) outfile = open('/tmp/README.html', 'w') ftp.retrlines("RETR " + "README.html", lambda s, w=outfile.write: w(s+"\n") ) ftp.quit() if __name__ == '__main__': downfile_conn_ftp(path=FTPSERVER, username='anonymous', email='test@163.com') |
我稍微解释下代码意思,注释的行不用看,是我测试用的一些代码,ftplib支持2中方式下载,一种是二进制下载,一种ascii文件下载,ftp.retrbinary,方式是二进制下载,ftp.retrlines是ascii下载,我代码用的是ascii文件下载,注释的行可用于二进制文件下载,不用修改,去掉注释即可,这两个函数都需要一个回调函数,就是每行或每个数据块都要经过这个函数处理一下,具体理解看代码执行结果吧,有问题留言,睡觉去喽。