python實(shí)現(xiàn)下載整個(gè)ftp目錄的方法
前言
最近因?yàn)闃I(yè)務(wù)需求,就寫了這個(gè)腳本,腳本完成的任務(wù)是從FTP上下載一個(gè)目錄,大家都知道從FTP上下載一個(gè)文件可用用get命令,下載多個(gè)文件可以用mget,但你要下載一個(gè)目錄,對(duì)不起,不能,如果非要較勁,你說用lftp,然后用mirror命令也可以呀,這個(gè)我不較真,因?yàn)槊總€(gè)公司有每個(gè)公司的場(chǎng)景,選擇合適的就行,因?yàn)槲覀冞@的FTP都是用ssl的,所以lftp就不能用了,腳本基本思路是建立ftp連接,然后登陸獲取文件列表,根據(jù)返回的列表進(jìn)行for循環(huán),一個(gè)一個(gè)下載。
腳本如下:
#!/usr/bin/evn python from ftplib import FTP_TLS, FTP import socket import ssl import os import sys class IMPLICIT_FTP_TLS(FTP_TLS): #構(gòu)造函數(shù)初始化父類 def __init__(self, host='', user='', passwd='', acct='', keyfile=None, certfile=None, timeout=60): FTP_TLS.__init__(self, host, user, passwd, acct, keyfile, certfile, timeout) #建立服務(wù)器的FTPS連接 def connect(self, host='', port=0, timeout=-999): if host != '': self.host = host if port > 0: self.port = port if timeout != -999: self.timeout = timeout try: #創(chuàng)建socket self.sock = socket.create_connection((self.host, self.port), self.timeout) self.af = self.sock.family #wrap_socket接收一個(gè)socket實(shí)例,返回SSLSocket實(shí)例,可以理解在普通socket上封裝了一層ssl self.sock = ssl.wrap_socket(self.sock, self.keyfile, self.certfile) self.file = self.sock.makefile('rb') self.welcome = self.getresp() except Exception as e: print (e) return self.welcome def get_ftp_ver(version): #如果沒有這個(gè)目錄就新建 if not os.path.isdir(version): os.makedirs(version) ftps = IMPLICIT_FTP_TLS() ftps.connect(host='10.0.0.8', port=666) ftps.login(user="ftp_user", passwd="ftp_password") #建立安全的數(shù)據(jù)連接,之后才能返回?cái)?shù)據(jù)。 ftps.prot_p() ftps.cwd(version) files = ftps.nlst() #進(jìn)入本地目錄 os.chdir(version) #循環(huán)下載每個(gè)文件 for file in files: fp = open(file, 'wb') ftps.retrbinary('RETR %s' % file, fp.write) ftps.close() if __name__ == '__main__': get_ftp_ver(sys.argv[1])
腳本使用:
#python get_data.py version_20160920
后面跟的參數(shù)基本就是研發(fā)提供給你要更新的文件名稱,然后運(yùn)行就可以下載整個(gè)目錄中的文件,腳本其它內(nèi)容大家看注釋就會(huì)明白。
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
- Python 使用SFTP和FTP實(shí)現(xiàn)對(duì)服務(wù)器的文件下載功能
- python從ftp獲取文件并下載到本地
- python實(shí)現(xiàn)從ftp上下載文件的實(shí)例方法
- 基于python實(shí)現(xiàn)FTP文件上傳與下載操作(ftp&sftp協(xié)議)
- python實(shí)現(xiàn)從ftp服務(wù)器下載文件
- Python FTP文件定時(shí)自動(dòng)下載實(shí)現(xiàn)過程解析
- python2.7實(shí)現(xiàn)FTP文件下載功能
- python實(shí)現(xiàn)的簡(jiǎn)單FTP上傳下載文件實(shí)例
- python實(shí)現(xiàn)支持目錄FTP上傳下載文件的方法
- Python實(shí)現(xiàn)FTP文件定時(shí)自動(dòng)下載的步驟
相關(guān)文章
python?操作?mongodb?數(shù)據(jù)庫(kù)詳情
這篇文章主要介紹了python?操作?mongodb?數(shù)據(jù)庫(kù)詳情,通過鏈接數(shù)據(jù)庫(kù),創(chuàng)建數(shù)據(jù)庫(kù)展開內(nèi)容詳細(xì),具有一定的參考價(jià)值,需要的的小伙伴可以參考一下2022-04-04使用Python中OpenCV和深度學(xué)習(xí)進(jìn)行全面嵌套邊緣檢測(cè)
這篇文章主要介紹了使用Python中OpenCV和深度學(xué)習(xí)進(jìn)行全面嵌套邊緣檢測(cè),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Python?PyJWT庫(kù)簡(jiǎn)化JSON?Web?Token的生成與驗(yàn)證
PyJWT庫(kù)為Python開發(fā)者提供了簡(jiǎn)便的生成和驗(yàn)證JWT的工具,本文將深入介紹PyJWT庫(kù)的核心概念、功能以及實(shí)際應(yīng)用,通過豐富的示例代碼,幫助大家更全面地了解和應(yīng)用這一強(qiáng)大的JWT庫(kù)2023-12-12python動(dòng)態(tài)加載包的方法小結(jié)
這篇文章主要介紹了python動(dòng)態(tài)加載包的方法,結(jié)合實(shí)例形式總結(jié)分析了Python動(dòng)態(tài)加載模塊,動(dòng)態(tài)增加屬性及動(dòng)態(tài)加載包的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-04-04