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

    未完待续。。。

  • 相关阅读:
    一个java程序员自学IOS开发之路(十三)
    一个java程序员自学IOS开发之路(十二)
    一个java程序员自学IOS开发之路(十一)
    Swift学习笔记(六)
    一个java程序员自学IOS开发之路(十)
    Swift学习笔记(五)
    ubuntu服务器环境配置参考
    ubuntu添加新用户并添加管理员权限
    java GUI Graphics2D 绘图
    java链接数据库--Mysql
  • 原文地址:https://www.cnblogs.com/Richardzhu/p/5332581.html
Copyright © 2011-2022 走看看