編寫Python指令碼來實現最簡單的FTP下載的教程

來源:互聯網
上載者:User
訪問FTP,無非兩件事情:upload和download,最近在項目中需要從ftp下載大量檔案,然後我就試著去實驗自己的ftp操作類,如下(PS:此段有問題,別複製使用,可以參考去實驗自己的ftp類!)

import osfrom ftplib import FTP class FTPSync():  def __init__(self, host, usr, psw, log_file):    self.host = host    self.usr = usr    self.psw = psw    self.log_file = log_file     def __ConnectServer(self):    try:      self.ftp = FTP(self.host)      self.ftp.login(self.usr, self.psw)      self.ftp.set_pasv(False)      return True    except Exception:      return False     def __CloseServer(self):    try:      self.ftp.quit()      return True    except Exception:      return False     def __CheckSizeEqual(self, remoteFile, localFile):    try:      remoteFileSize = self.ftp.size(remoteFile)      localFileSize = os.path.getsize(localFile)      if localFileSize == remoteFileSize:        return True      else:        return False    except Exception:      return None       def __DownloadFile(self, remoteFile, localFile):    try:      self.ftp.cwd(os.path.dirname(remoteFile))      f = open(localFile, 'wb')      remoteFileName = 'RETR ' + os.path.basename(remoteFile)      self.ftp.retrbinary(remoteFileName, f.write)             if self.__CheckSizeEqual(remoteFile, localFile):        self.log_file.write('The File is downloaded successfully to %s' + '\n' % localFile)        return True      else:        self.log_file.write('The localFile %s size is not same with the remoteFile' + '\n' % localFile)        return False    except Exception:      return False     def __DownloadFolder(self, remoteFolder, localFolder):    try:      fileList = []      self.ftp.retrlines('NLST', fileList.append)      for remoteFile in fileList:        localFile = os.path.join(localFolder, remoteFile)        return self.__DownloadFile(remoteFile, localFile)    except Exception:      return False     def SyncFromFTP(self, remoteFolder, localFolder):    self.__DownloadFolder(remoteFolder, localFolder)    self.log_file.close()    self.__CloseServer()
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.