pytnon FTP编程:Python自带ftplib 模块,是用来对FTP服务器进行上传、下载操作,非常方便,使用起来也是行简单。
如果我们熟悉了下面代码编写,怎么把FTP服务器上的文件下载到本地,怎么把文件上传到FTP服务器上和批量FTP上传、下载
就基本掌握了Python FTP编程。
1 #-*- coding:utf-8 -*- 2 #author:lhj588@live.cn 3 #C_Date: 2011.11.17 4 from ftplib import FTP 5 import socket 6 import os 7 #ftp服务器地址 8 ftp_server = '127.0.0.1' 9 #ftp服务器端口 10 ftp_port ='5433' 11 #ftp服务器登录名称 12 user_name = 'lhj588' 13 #ftp服务器登录密码 14 password = '888888' 15 16 17 """ 18 描述:描述:简单FTP文件下载 19 """ 20 def upload_ftp(): 21 ftp = FTP() 22 #打开调试级别2,显示详细信息 23 ftp.set_debuglevel(2) 24 #连接FTP服务器 25 ftp.connect(ftp_server,ftp_port) 26 #登录FTP服务器 如果匿名登录则用空串代替即可 27 ftp.login(user_name,password) 28 29 #显示FTP服务器欢迎信息 30 print ftp.getwelcome() 31 32 dir_name = "/mysoft/tool/" 33 #选择要上传文件存放服务器的目录 34 ftp.cwd(dir_name) 35 #设置缓冲块大小 36 buf_size = 1024 37 #文件名称 38 file_name = "test.jpg" 39 #以写模式在本地打开文件 40 f_handler = open(file_name,'wb').write() 41 #接收FTP服务器上文件并写入本地 42 ftp.retrbinary("RETR test.jpg",f_handler,buf_size) 43 #关闭调试 44 ftp.set_debuglevel(0) 45 #退出FTP服务器 46 ftp.quit() 47 """ 48 描述:简单FTP文件上传 49 """ 50 def down_ftp(): 51 ftp = FTP() 52 #打开调试级别2,显示详细信息 53 ftp.set_debuglevel(2) 54 #连接FTP服务器 55 ftp.connect(ftp_server,ftp_port) 56 #登录FTP服务器 如果匿名登录则用空串代替即可 57 ftp.login(user_name,password) 58 print ftp.getwelcome() 59 dir_name = "/mysoft/tool/" 60 ftp.cwd(dir_name) 61 buf_size = 1024 62 file_name = 'test.jpg' 63 #以读模式在本地打开文件 64 f_handler = open(file_name,'rb') 65 #上传文件 66 ftp.storbinary('STOR server_test.jpg',f_handler,buf_size) 67 #关闭调试 68 ftp.set_debuglevel(0) 69 #关闭文件 70 f_handler.close() 71 #退出FTP服务器 72 ftp.quit() 73 74 """ 75 描述:登录到FTP站点:ftp_server,并到tarDirTemp目录下下载fileNameTempList列表中的文件 76 参数:ftp_server:ftp站点名称 user_name:ftp登录名 password:ftp密码 77 tarDirTemp:下载的目标绝对目录 fileNameTempList:要下载的文件全名列表 78 返回值:输出:成功:0 失败:1 79 """ 80 def down_ftp_file(ftp_server, user_name, password, tarDirTemp,fileNameTempList): 81 try: 82 ftp = FTP(ftp_server) 83 ftp.login(user_name, password) 84 ftp.cwd(tarDirTemp) 85 ftp.set_debuglevel(2) 86 except socket.error as errobj: 87 print 'fpt error: %s can\'t download directory\'s file %s' % (errobj, tarDirTemp) 88 return False 89 90 for filename in fileNameTempList: 91 try: 92 #以写模式在本地打开文件 93 fp = open(filename, 'wb') 94 #从FTP中下载文件 95 ftp.retrbinary('RETR '+filename, fp.write, 1024) 96 except IOError as ioerr: 97 print 'Error: [%s] %s' % (ioerr.errno, ioerr.strerror) 98 return False 99 except FTP.all_errors as errobj: 100 print 'fpt error: [%s] %s' % (errobj, filename) 101 if os.path.isfile(filename): 102 os.system('rm -f ' + filename) 103 continue 104 ftp.close() 105 return True 106 107 """ 108 描述:测试方法 109 """ 110 if __name__=="__main__": 111 upload_ftp() 112 down_ftp() 113 down_ftp_file(ftp_server,user_name,password,"/mysoft/tool/",['1.jpg','2.jpg','3.jpg'])