亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python使用sftp實(shí)現(xiàn)傳文件夾和文件

瀏覽:16日期:2022-06-21 17:32:46

利用python的sftp實(shí)現(xiàn)文件上傳,可以是文件,也可以是文件夾。

版本Python2.7.13 應(yīng)該不用pip安裝更多的插件,都是自帶的

不多說(shuō) 上代碼

# -*- coding:utf-8 -*-import sysreload(sys)sys.setdefaultencoding(’utf-8’)import paramikoimport os_XFER_FILE = ’FILE’_XFER_DIR = ’DIR’class MainWindow(object): # 構(gòu)造方法 def __init__(self, arg):# 超類(lèi)調(diào)用super(MainWindow, self).__init__()# 賦值參數(shù)[字典]# 參數(shù)格式 arg = {’ip’:’填ip’,’user’:’用戶(hù)名’,’password’:’密碼’,’port’:22}self.arg = arg# 賦值參數(shù)[FTP]self.sftp = None# 調(diào)試日志print self.arg # 啟動(dòng)程序 def startup(self):# 連接FTPif self.sftp != None: print u’您已經(jīng)成功連接了’tmpstr = u’開(kāi)始連接...用戶(hù)名:’+self.arg[’user’]+u’ 密碼:’+self.arg[’password’]+’ IP:’+self.arg[’ip’]+u’ 端口:’+str(self.arg[’port’])print tmpstrtry: transport = paramiko.Transport((self.arg[’ip’], self.arg[’port’])) transport.connect(username=self.arg[’user’], password=self.arg[’password’]) self.sftp = paramiko.SFTPClient.from_transport(transport) print (u’連接成功 ’+self.arg[’ip’])except Exception as e: print u’連接失敗:’+str(e) # 關(guān)閉程序 def shutdown(self):# 關(guān)閉FTPif self.sftp: self.sftp.close() print ’### disconnect sftp server: %s!’%self.arg[’ip’] self.sftp = None # 處理上傳 def upload(self, source, target, replace):### 操作數(shù)據(jù)# 來(lái)源路徑source = source.replace(’’, ’/’)# 目標(biāo)路徑target = target.replace(’’, ’/’)### 驗(yàn)證數(shù)據(jù)if not os.path.exists(source): print u’來(lái)源資源不存在,請(qǐng)檢查:’ + source return### 格式數(shù)據(jù)# 格式化目標(biāo)路徑self.__makePath(target)### 處理數(shù)據(jù)# 文件媒體數(shù)據(jù)(文件類(lèi)型, 文件名稱(chēng))filetype, filename = self.__filetype(source)# 判斷文件類(lèi)型if filetype == _XFER_DIR: # 1.目錄 self.uploadDir(source, target, replace)elif filetype == _XFER_FILE: # 2.文件 self.uploadFile(source, filename, replace) # 傳送目錄 def uploadDir(self, source, target, replace):### 驗(yàn)證數(shù)據(jù)# 判斷目錄存在if not os.path.isdir(source): print u’這個(gè)函數(shù)是用來(lái)傳送本地目錄的’ return### 處理數(shù)據(jù)# 遍歷目錄內(nèi)容,上傳資源for file in os.listdir(source): # 資源路徑 filepath = os.path.join(source, file) # 判斷資源文件類(lèi)型 if os.path.isfile(filepath): # 1.文件self.uploadFile(filepath, file, replace) elif os.path.isdir(filepath):# 2.目錄try: self.sftp.chdir(file) except: self.sftp.mkdir(file) self.sftp.chdir(file) self.uploadDir(filepath, file, replace)### 重置數(shù)據(jù)# 返回上一層目錄self.sftp.chdir(’..’) # 傳送文件 def uploadFile(self, filepath, filename, replace):### 驗(yàn)證數(shù)據(jù)# 驗(yàn)證文件類(lèi)型if not os.path.isfile(filepath): print u’這個(gè)函數(shù)是用來(lái)傳送單個(gè)文件的’ return# 驗(yàn)證文件存在if not os.path.exists(filepath): print u’err:本地文件不存在,檢查一下’+filepath return# 驗(yàn)證FTP已連接if self.sftp == None: print u’sftp 還未鏈接’ return### 處理數(shù)據(jù)# 判斷文件存在是否覆蓋if not replace: if filename in self.sftp.listdir():print u’[*] 這個(gè)文件已經(jīng)存在了,選擇跳過(guò):’ + filepath + ’ -> ’ + self.sftp.getcwd() + ’/’ + filenamereturn# 上傳文件try: self.sftp.put(filepath, filename) print u’[+] 上傳成功:’ + filepath + ’ -> ’ + self.sftp.getcwd() + ’/’ + filenameexcept Exception as e: print u’[+] 上傳失敗:’ + filepath + ’ because ’ + str(e) # 獲得文件媒體數(shù)據(jù)({文件/目錄, 文件名稱(chēng)}) def __filetype(self, source):# 判斷文件類(lèi)型if os.path.isfile(source): # 1.文件 index = source.rfind(’/’) return _XFER_FILE, source[index+1:]elif os.path.isdir(source): # 2.目錄 return _XFER_DIR, ’’ # 創(chuàng)建目標(biāo)路徑 # 說(shuō)明: 目標(biāo)路徑不存在則依次創(chuàng)建路徑目錄 def __makePath(self, target):# 切換根目錄self.sftp.chdir(’/’)# 分割目標(biāo)目錄為目錄單元集合data = target.split(’/’)# 進(jìn)入目標(biāo)目錄, 目錄不存在則創(chuàng)建for item in data: try:self.sftp.chdir(item) print u’要上傳的目錄已經(jīng)存在,選擇性進(jìn)入合并:’ + item except:self.sftp.mkdir(item)self.sftp.chdir(item) print u’要上傳的目錄不存在,創(chuàng)建目錄:’ + itemif __name__ == ’__main__’: # ''' # 先熟悉一下sftp有哪些用法 sftp.listdir(可以傳參可以為空) 返回當(dāng)前目錄下清單列表 # mkdir 創(chuàng)建目錄對(duì)應(yīng)rmdir sftp.put(本地路徑,遠(yuǎn)程要存的文件名) chdir進(jìn)入子目錄 # ''' arg = {’ip’:’填ip’,’user’:’填用戶(hù)名’,’password’:’填密碼’,’port’:22} me = MainWindow(arg) me.startup() # 要上傳的本地文件夾路徑 source = r’E:xamppbackupmysqlcto’ # 上傳到哪里 [遠(yuǎn)程目錄](méi) target = r’/home/www/cto/wp-superdo/backup/db’ replace = False me.upload(source, target, replace) me.shutdown()def main(source, target, replace=False): arg = {’ip’:填ip,’user’:填用戶(hù)名,’password’:填密碼,’port’:22} me = MainWindow(arg) me.startup() me.upload(source, target, replace) me.shutdown()

因?yàn)镻ython2.7對(duì)中文的支持不是很好所以如果出現(xiàn)中文錯(cuò)誤修改一下 Python27Libsite-packagesparamikopy3compat.py

Python使用sftp實(shí)現(xiàn)傳文件夾和文件

還有

Python使用sftp實(shí)現(xiàn)傳文件夾和文件

最后上一下執(zhí)行結(jié)果

Python使用sftp實(shí)現(xiàn)傳文件夾和文件

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 伊甸园精品视频网站 | 快射视频网 | 在线日产一区二区 | 国产三级视频在线观看视主播 | 小明台湾成人永久免费看看 | 久久精品成人欧美大片免费 | 国产成人精品第一区二区 | 丝袜足液精子免费视频 | 一个人看aaaa免费中文 | 国产欧美一区二区 | 日韩免费a级在线观看 | 久久综合社区 | 小泽玛利亚一区二区在线看 | 免费簧网站永久在线播放国产 | 日韩中文在线 | 亚洲黄色激情网 | 国产成人91一区二区三区 | 91视频最新网址 | 国产综合色在线视频区色吧图片 | 日本欧美成| 女人午夜色又刺激黄的视频免费 | 中文字幕 亚洲精品 | 九九在线免费观看视频 | 99国产精品九九视频免费看 | 国产欧美一区二区三区免费 | 看黄子片免费 | 欧美在线第一二三四区 | 网友自拍视频在线观看 | 性做久久久久久久久25的美女 | 中国一级片免费看 | 欧洲在线免费视频 | 三级黄免费 | 国产女人综合久久精品视 | 黄色片视频网站 | 黑人巨大vs北条麻妃在线播放 | 永久免费人成网ww555kkk手机 | 91欧美一区二区三区综合在线 | 欧美国产在线观看 | 亚洲欧洲国产成人综合一本 | 国产一级一级片 | 欧美一级日本一级韩国一级 |