• 【python】FTP客户端


    Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件,函数列举如下

    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文件
    

      

    FTP.quit()与FTP.close()的区别

    • FTP.quit():发送QUIT命令给服务器并关闭掉连接。这是一个比较“缓和”的关闭连接方式,但是如果服务器对QUIT命令返回错误时,会抛出异常。
    • FTP.close():单方面的关闭掉连接,不应该用在已经关闭的连接之后,例如不应用在FTP.quit()之后。
    #!/usr/bin/env python
    
    import ftplib
    import os
    import socket
    
    HOST = 'ftp.mozilla.org'
    DIRN = 'pub/mozilla.org/webtools'
    FILE = 'bugzilla-LATEST.tar.gz'
    
    def main():
        try:
            f = ftplib.FTP(HOST) #实例化
        except (socket.error, socket.gaierror), e:
            print 'ERROR: cannot reach "%s"' % HOST
            return 
        print '*** Connected to host "%s"' % HOST
    
        try:
            f.login()
        except ftplib.error_perm:
            print 'ERROR: cannot login anonymously'
            f.quit()
            return 
        print '*** Logged in as "anonymous"'
    
        try:
            f.cwd(DIRN) ##确认本地下载路径
        except ftplib.error_perm:
            print 'ERROR: cannot CD to "%s" folder' % DIRN
            f.quit()
            return 
        print '*** Changed to "%s" folder' % DIRN
    
        try:
            f.retrbinary('RETR %s' % FILE,
                open(FILE, 'wb').write)  ##下载文件
        except ftplib.error_perm:
            print 'ERROR: cannot read file "%s"' % FILE
            if os.path.exists(FILE): os.unlink(FILE) ##重名的话删除文件
        else:
            print '*** Downloaded "%s" to CWD' % FILE
        f.quit()
        return 
    
    if __name__ == '__main__':
        main()
    

      

  • 相关阅读:
    selinux 设置的彻底理解 并要 熟练经常的使用
    关于linux下自定义的 alias文件和自定义函数库的通用写法(只适合自己的)
    linux下关于mysql的命令的用法
    彻底地/ 终于地, 解决 关于apache 权限的问题了:: 修改 DocumentRoot后的 403错误: have no permission to access / on this server
    php的内核组成模块和运行原理
    彻底了解 suid, sgid ,sticky权限
    php编程疑难解决-1
    再次安装fedora23的一些遗留问题的解决
    word如何替换行首?
    php高级开发参考地址
  • 原文地址:https://www.cnblogs.com/paulwinflo/p/5016282.html
Copyright © 2020-2023  润新知