一、引言:
某一天,開發哥們跟我反映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])
未完待續。。。