Python使用ftplib實現簡易FTP用戶端的方法

來源:互聯網
上載者:User
本文執行個體講述了Python使用ftplib實現簡易FTP用戶端的方法。分享給大家供大家參考。具體實現方法如下:

#!/usr/bin/python #-*- coding:utf-8 -*- from ftplib import FTP   #載入ftp模組 ftp=FTP()          #設定變數 ftp.set_debuglevel(2)    #開啟調試層級2,顯示詳細資料 ftp.connect("IP","port")  #串連的ftp sever和連接埠 ftp.login("user","password")#串連的使用者名稱,密碼 print ftp.getwelcome()   #列印出歡迎資訊 ftp.cmd("xxx/xxx")     #更改遠程目錄 bufsize=1024        #設定的緩衝區大小 filename="filename.txt"   #需要下載的檔案 file_handle=open(filename,"wb").write#以寫入模式在本地開啟檔案 ftp.retrbinaly("RETR filename.txt",file_handle,bufsize)#接收伺服器上檔案並寫入本地檔案 ftp.set_debuglevel(0)    #關閉偵錯模式 ftp.quit          #退出ftp ftp.dir()          #顯示目錄下檔案資訊 ftp.mkd(pathname)      #建立遠程目錄 ftp.pwd()          #返回當前所在位置 ftp.rmd(dirname)      #刪除遠程目錄 ftp.delete(filename)    #刪除遠程檔案 ftp.rename(fromname, toname)#將fromname修改名稱為toname。 ftp.storbinaly("STOR filename.txt",file_handel,bufsize) #上傳目標檔案

一個FTP完整執行個體:

#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' )     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     LocalNames = os.listdir( LocalDir )     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 ):     if os.path.isdir( LocalDir ) == False:       os.makedirs( LocalDir )     self.ftp.cwd( RemoteDir )     RemoteNames = self.ftp.nlst()      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 "" 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() ftp = myFtp('********') ftp.Login('*****','*****') #ftp.DownLoadFile('TEST.TXT', 'others\\runtime.log')#ok #ftp.UpLoadFile('runtime.log', 'others\\runtime.log')#ok #ftp.DownLoadFileTree('bcd', 'others\\abc')#ok #ftp.UpLoadFileTree('aaa',"others\\" ) ftp.close()print "ok!"

希望本文所述對大家的Python程式設計有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.