• 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])

    未完待续。。。

  • 相关阅读:
    mysql代码实现hive中的rank()排序方法,获得top3中的最小值
    MySQL--Hive中字段数据类型对比
    使用shell脚本连接mysql shell脚本执行mysql语句
    WPS中查看超链接后返回超链接位置
    shell脚本中常用的命令
    Lamda一行代码实现"36选7"随机自动选号
    创建Visual studio项目模板 vstemplate关键点纪要
    网络传输及数据解析
    动画
    触摸事件与手势识别
  • 原文地址:https://www.cnblogs.com/Richardzhu/p/5332581.html
Copyright © 2020-2023  润新知