• Python之ftplib模块


    一、引言:

      某一天,开发哥们跟我反映lftp和java写的ftp程序下载文件有问题,具体情况如下:当一个大于1G的文件已经下载完毕以后一直出现夯住的情况。为了重现开发哥们所说情况,我就自己用pytho写了一个ftp的脚本,其中就有调用ftplib模块。下面重点介绍一下ftplib模块。

    二、ftplib模块介绍:

      ftplib是python的内置的一个标准模块,它提供了极强大的对FTP服务器的操作,通过它我们可以连接并操作FTP服务端。 

    #!/usr/bin/env python
    # -*- coding=utf-8 -*-
    
    from ftplib import FTP
    import sys
    import threading
    
    
    def ftpconnect():
        #ftp服务器的IP
        ftp_server = '192.168.2.100'
        #ftp的用户名
        username = 'Richard'
        #用户的密码
        password = 'Richard'
        #创建一个ftp的实例
        ftp=FTP()
        #打开调试级别2,显示详细信息
        ftp.set_debuglevel(2)
        #连接ftp服务器,需要输入IP,端口,以及超时时间
        ftp.connect(ftp_server,2100,600)
        #连接的用户名、密码
        ftp.login(username,password)
        return ftp
    
    def downloadfile():
        #需要将下载文件存在的路径和文件名
        remotepath = sys.argv[2]
        #连接ftp服务器
        ftp = ftpconnect()
        #获得欢迎信息
        print ftp.getwelcome()
    
        bufsize = 10240
        localpath = '/root/Richard.txt'
        with open(localpath,'wb') as fp:
            # fp = open(localpath,'wb')
            ftp.retrbinary('RETR ' + remotepath,fp.write,bufsize)
            print ("hello")
            ftp.set_debuglevel(0)
            # fp.close()
            ftp.quit()
    
    def uploaded(filename):
        ftp = ftpconnect()
        remotepath = "/Richard/%s"%filename
        print ftp.getwelcome()
        bufsize = 1024
        localpath = '/var/ftp/Richard/%s' %filename
        with open(localpath,'wb') as fp:
            # fp = open(localpath,'rb')
            ftp.storbinary('STOR ' + remotepath,fp,bufsize)
            ftp.set_debuglevel(0)
            # fp.close()
            ftp.quit()
    
    def ftp_multithreading(func,filename):
        t = threading.Thread( target = func,args=(filename,) )
        t.start()
    
    if __name__ == "__main__":
        ftp_multithreading(sys.argv[1],sys.argv[2])

    未完待续。。。

  • 相关阅读:
    反思二
    安装Electron时卡在install.js不动的解决方案
    解决npm 下载速度慢的问题
    覆盖第三方jar包中的某一个类。妙!!
    关于拦截器是用注解方便,还是用配置文件写死方便的总结。
    yapi 启动后,老是自动关闭的问题。
    BaseResponse公共响应类,与我的设计一模一样,靠、ApiResponse
    HashMap 的 7 种遍历方式与性能分析!(强烈推荐)、forEach
    Jackson objectMapper.readValue 方法 详解
    yapi tag的问题,暂时只保留一个tag
  • 原文地址:https://www.cnblogs.com/Richardzhu/p/5332581.html
Copyright © 2020-2023  润新知