美文网首页
python ftp

python ftp

作者: SugeonYen | 来源:发表于2020-02-04 21:37 被阅读0次
    ftp 基础命令
    cd:切换目标路径
    lcd:查看当前路径或切换当前路径
    prompt:关闭交互,例如mget下载多个文件,没下载一个都要选择y/n,prompt模式默认为y,无需交互
    binary:设定传输方式为二进制
    put/send:上传
    get:下载单个文件,文件名不支持通配符
    mget:下载多个,支持通配符
    
    ftp> ascii # 设定以ASCII方式传送文件(缺省值) 
    ftp> bell  # 每完成一次文件传送,报警提示. 
    ftp> binary # 设定以二进制方式传送文件. 
    ftp> bye  # 终止主机FTP进程,并退出FTP管理方式. 
    ftp> case # 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母. 
    ftp> cd   # 同UNIX的CD命令. 
    ftp> cdup  # 返回上一级目录. 
    ftp> chmod # 改变远端主机的文件权限. 
    ftp> close # 终止远端的FTP进程,返回到FTP命令状态, 所有的宏定义都被删除. 
    ftp> delete # 删除远端主机中的文件. 
    ftp> dir [remote-directory] [local-file] # 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件. 
    ftp> get [remote-file] [local-file] # 从远端主机中传送至本地主机中. 
    ftp> help [command] # 输出命令的解释. 
    ftp> lcd # 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录. 
    ftp> ls [remote-directory] [local-file] # 同DIR. 
    ftp> macdef         # 定义宏命令. 
    ftp> mdelete [remote-files] # 删除一批文件. 
    ftp> mget [remote-files]  # 从远端主机接收一批文件至本地主机. 
    ftp> mkdir directory-name  # 在远端主机中建立目录. 
    ftp> mput local-files # 将本地主机中一批文件传送至远端主机. 
    ftp> open host [port] # 重新建立一个新的连接. 
    ftp> prompt      # 交互提示模式. 
    ftp> put local-file [remote-file] # 将本地一个文件传送至远端主机中. 
    ftp> pwd # 列出当前远端主机目录. 
    ftp> quit # 同BYE. 
    ftp> recv remote-file [local-file] # 同GET. 
    ftp> rename [from] [to]   # 改变远端主机中的文件名. 
    ftp> rmdir directory-name  # 删除远端主机中的目录. 
    ftp> send local-file [remote-file] # 同PUT. 
    ftp> status  # 显示当前FTP的状态. 
    ftp> system  # 显示远端主机系统类型. 
    ftp> user user-name [password] [account] # 重新以别的用户名登录远端主机. 
    ftp> ? [command] # 同HELP. [command]指定需要帮助的命令名称。如果没有指定 command,ftp 将显示全部命令的列表。
    ftp> ! # 从 ftp 子系统退出到外壳。
    
    ftplib python命令
    ftp登陆连接
    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相关命令操作
    ftp.cwd(pathname)                 #设置FTP当前操作的路径
    ftp.dir()                         #显示目录下所有目录信息
    ftp.nlst()                        #获取目录下的文件
    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.retrbinary("RETR filename.txt",file_handel,bufsize)  #下载FTP文件
    
    函数式上传、下载
    #coding: utf-8
    from ftplib import FTP
    import time
    import tarfile
    #!/usr/bin/python
    #-*- coding: utf-8 -*-
    
    from ftplib import FTP
    
    def ftpconnect(host, username, password, port):
        ftp = FTP()
        #ftp.set_debuglevel(2)         #打开调试级别2,显示详细信息
        ftp.connect(host, port)          #连接
        ftp.login(username, password)  #登录,如果匿名登录则用空串代替即可
        return ftp
        
    def downloadfile(ftp, remotepathfile, localpathfile):
        bufsize = 1024                #设置缓冲块大小
        fp = open(localpathfile,'wb')     #以写模式在本地打开文件
        ftp.retrbinary('RETR ' + remotepathfile, fp.write, bufsize) #接收服务器上文件并写入本地文件
        ftp.set_debuglevel(0)         #关闭调试 ;     ftp.set_debuglevel(2) :  打开调试级别2,显示详细信息
        fp.close()                   #关闭文件
    
    def uploadfile(ftp, remotepathfile, localpathfile):
        bufsize = 1024
        fp = open(localpathfile, 'rb')
        ftp.storbinary('STOR '+ remotepathfile , fp, bufsize) #上传文件
        ftp.set_debuglevel(0)   #关闭调试 ;     ftp.set_debuglevel(2) :  打开调试级别2,显示详细信息
        fp.close()                #关闭文件                                   
    
    if __name__ == "__main__":
        ftp = ftpconnect("******", "***", "***",21)
        downloadfile(ftp, "***", "***")
        uploadfile(ftp, "***", "***")
    
        ftp.quit()
    
    类封装,上传下载目录树
    #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
            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('*****')
        ftp.Login('***','***')
    
        ftp.DownLoadFileTree('del', '/del1')#ok
        ftp.UpLoadFileTree('del', "/del1" )
        ftp.close()
        print "ok!"
    

    相关文章

      网友评论

          本文标题:python ftp

          本文链接:https://www.haomeiwen.com/subject/alkdxhtx.html