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ì)明白。
以上就是這篇文章的全部內(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)的簡單FTP上傳下載文件實(shí)例
- python實(shí)現(xiàn)支持目錄FTP上傳下載文件的方法
- Python實(shí)現(xiàn)FTP文件定時(shí)自動(dòng)下載的步驟
相關(guān)文章
python?操作?mongodb?數(shù)據(jù)庫詳情
這篇文章主要介紹了python?操作?mongodb?數(shù)據(jù)庫詳情,通過鏈接數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)庫展開內(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-05
Python?PyJWT庫簡化JSON?Web?Token的生成與驗(yàn)證
PyJWT庫為Python開發(fā)者提供了簡便的生成和驗(yàn)證JWT的工具,本文將深入介紹PyJWT庫的核心概念、功能以及實(shí)際應(yīng)用,通過豐富的示例代碼,幫助大家更全面地了解和應(yīng)用這一強(qiáng)大的JWT庫2023-12-12
python動(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

