Python之ftplib模块

Posted I’m Me!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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])

未完待续。。。

以上是关于Python之ftplib模块的主要内容,如果未能解决你的问题,请参考以下文章

python ftplib模块

ftplib模块

python ftplib模块编写简单的ftp服务

python使用ftplib模块实现FTP文件的上传下载

python:使用ftplib编写FTP客户端

使用 python ftplib 下载二进制格式的 zip 文件