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'])