Python 操作FTP檔案,上傳下載檔案
阿新 • • 發佈:2019-02-11
#!C:/Python27 #coding=utf-8 from ctypes import * import os import sys import ftplib class myFtp: ftp = ftplib.FTP() bIsDir = False path = "" def __init__(self, host, port='21'): # self.ftp.set_debuglevel(2) #開啟除錯級別2,顯示詳細資訊 # self.ftp.set_pasv(0) #0主動模式 1 #被動模式 self.ftp.connect(host, port) def Login(self, user, passwd): self.ftp.login(user, passwd) print self.ftp.welcome def DownLoadFile(self, LocalFile, RemoteFile):#下載當個檔案 file_handler = open(LocalFile, 'wb') print file_handler self.ftp.retrbinary("RETR %s" % (RemoteFile), file_handler.write)#接收伺服器上檔案並寫入本地檔案 file_handler.close() return True def UpLoadFile(self, LocalFile, RemoteFile): if os.path.isfile(LocalFile) == False: return False file_handler = open(LocalFile, "rb") self.ftp.storbinary('STOR %s' % RemoteFile, file_handler, 4096)#上傳檔案 file_handler.close() return True def UpLoadFileTree(self, LocalDir, RemoteDir): if os.path.isdir(LocalDir) == False: return False print "LocalDir:", LocalDir LocalNames = os.listdir(LocalDir) print "list:", LocalNames print RemoteDir self.ftp.cwd(RemoteDir) for Local in LocalNames: src = os.path.join(LocalDir, Local) if os.path.isdir(src): self.UpLoadFileTree(src, Local) else: self.UpLoadFile(src, Local) self.ftp.cwd("..") return def DownLoadFileTree(self, LocalDir, RemoteDir):#下載整個目錄下的檔案 print "remoteDir:", RemoteDir if os.path.isdir(LocalDir) == False: os.makedirs(LocalDir) self.ftp.cwd(RemoteDir) RemoteNames = self.ftp.nlst() print "RemoteNames", RemoteNames print self.ftp.nlst("/del1") for file in RemoteNames: Local = os.path.join(LocalDir, file) if self.isDir(file): self.DownLoadFileTree(Local, file) else: self.DownLoadFile(Local, file) self.ftp.cwd("..") return def show(self, list): result = list.lower().split(" ") if self.path in result and "<dir>" in result: self.bIsDir = True def isDir(self, path): self.bIsDir = False self.path = path # this ues callback function ,that will change bIsDir value self.ftp.retrlines('LIST', self.show) return self.bIsDir def close(self): self.ftp.quit() if __name__ == "__main__": ftp = myFtp('10.116.118.80') ftp.Login('778735', '123456')#登入,如果匿名登入則用空串代替即可 ftp.DownLoadFileTree('E:/study', '/owt/20170504') # 從目標目錄下載到本地目錄E盤 #ftp.UpLoadFileTree('E:/study', '/owt/20170504') #ftp.DownLoadFile('E:/study/r2101-ROOT-20170428.zip','/owt/20170504/r2101-ROOT-20170428.zip') #ftp.UpLoadFile('E:/study/bak.txt','/owt/20170504/bak.txt') ftp.close() print "ok!"