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

未完待续。。。

posted @ 2016-03-29 13:13  I’m Me!  阅读(5777)  评论(0编辑  收藏  举报