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])
未完待续。。。