zoukankan      html  css  js  c++  java
  • 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])

    未完待续。。。

  • 相关阅读:
    Http异常状态码解决方案。
    integer 面试题。
    int转换为String,常用的四种方法。
    Implicit super constructor Array() is undefined for default constructor. Must define an explicit constructor
    Eclipse的常用设置。
    构造方法详解。
    this关键字。
    面向对象--构造方法知识点。
    生成1-100之间的随机数。
    redis回顾
  • 原文地址:https://www.cnblogs.com/Richardzhu/p/5332581.html
Copyright © 2011-2022 走看看