python ftplib模塊制作ftp客戶端

mxw8 9年前發布 | 3K 次閱讀 Python

#!/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

</pre>

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) #上傳目標文件

</pre> 一個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 "<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()

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!"

</pre>

 本文由用戶 mxw8 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!