电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python使用sftp實現傳文件夾和文件

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

利用python的sftp實現文件上傳,可以是文件,也可以是文件夾。

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

不多說 上代碼

# -*- coding:utf-8 -*-import sysreload(sys)sys.setdefaultencoding(’utf-8’)import paramikoimport os_XFER_FILE = ’FILE’_XFER_DIR = ’DIR’class MainWindow(object): # 構造方法 def __init__(self, arg):# 超類調用super(MainWindow, self).__init__()# 賦值參數[字典]# 參數格式 arg = {’ip’:’填ip’,’user’:’用戶名’,’password’:’密碼’,’port’:22}self.arg = arg# 賦值參數[FTP]self.sftp = None# 調試日志print self.arg # 啟動程序 def startup(self):# 連接FTPif self.sftp != None: print u’您已經成功連接了’tmpstr = u’開始連接...用戶名:’+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) # 關閉程序 def shutdown(self):# 關閉FTPif self.sftp: self.sftp.close() print ’### disconnect sftp server: %s!’%self.arg[’ip’] self.sftp = None # 處理上傳 def upload(self, source, target, replace):### 操作數據# 來源路徑source = source.replace(’’, ’/’)# 目標路徑target = target.replace(’’, ’/’)### 驗證數據if not os.path.exists(source): print u’來源資源不存在,請檢查:’ + source return### 格式數據# 格式化目標路徑self.__makePath(target)### 處理數據# 文件媒體數據(文件類型, 文件名稱)filetype, filename = self.__filetype(source)# 判斷文件類型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):### 驗證數據# 判斷目錄存在if not os.path.isdir(source): print u’這個函數是用來傳送本地目錄的’ return### 處理數據# 遍歷目錄內容,上傳資源for file in os.listdir(source): # 資源路徑 filepath = os.path.join(source, file) # 判斷資源文件類型 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)### 重置數據# 返回上一層目錄self.sftp.chdir(’..’) # 傳送文件 def uploadFile(self, filepath, filename, replace):### 驗證數據# 驗證文件類型if not os.path.isfile(filepath): print u’這個函數是用來傳送單個文件的’ return# 驗證文件存在if not os.path.exists(filepath): print u’err:本地文件不存在,檢查一下’+filepath return# 驗證FTP已連接if self.sftp == None: print u’sftp 還未鏈接’ return### 處理數據# 判斷文件存在是否覆蓋if not replace: if filename in self.sftp.listdir():print u’[*] 這個文件已經存在了,選擇跳過:’ + 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) # 獲得文件媒體數據({文件/目錄, 文件名稱}) def __filetype(self, source):# 判斷文件類型if os.path.isfile(source): # 1.文件 index = source.rfind(’/’) return _XFER_FILE, source[index+1:]elif os.path.isdir(source): # 2.目錄 return _XFER_DIR, ’’ # 創建目標路徑 # 說明: 目標路徑不存在則依次創建路徑目錄 def __makePath(self, target):# 切換根目錄self.sftp.chdir(’/’)# 分割目標目錄為目錄單元集合data = target.split(’/’)# 進入目標目錄, 目錄不存在則創建for item in data: try:self.sftp.chdir(item) print u’要上傳的目錄已經存在,選擇性進入合并:’ + item except:self.sftp.mkdir(item)self.sftp.chdir(item) print u’要上傳的目錄不存在,創建目錄:’ + itemif __name__ == ’__main__’: # ''' # 先熟悉一下sftp有哪些用法 sftp.listdir(可以傳參可以為空) 返回當前目錄下清單列表 # mkdir 創建目錄對應rmdir sftp.put(本地路徑,遠程要存的文件名) chdir進入子目錄 # ''' arg = {’ip’:’填ip’,’user’:’填用戶名’,’password’:’填密碼’,’port’:22} me = MainWindow(arg) me.startup() # 要上傳的本地文件夾路徑 source = r’E:xamppbackupmysqlcto’ # 上傳到哪里 [遠程目錄] 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’:填用戶名,’password’:填密碼,’port’:22} me = MainWindow(arg) me.startup() me.upload(source, target, replace) me.shutdown()

因為Python2.7對中文的支持不是很好所以如果出現中文錯誤修改一下 Python27Libsite-packagesparamikopy3compat.py

Python使用sftp實現傳文件夾和文件

還有

Python使用sftp實現傳文件夾和文件

最后上一下執行結果

Python使用sftp實現傳文件夾和文件

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 皮带机-带式输送机价格-固定式胶带机生产厂家-河南坤威机械 | 广州/东莞小字符喷码机-热转印打码机-喷码机厂家-广州瑞润科技 | 欧版反击式破碎机-欧版反击破-矿山石料破碎生产线-青州奥凯诺机械 | 304不锈钢无缝管_不锈钢管厂家 - 隆达钢业集团有限公司 | 北京银联移动POS机办理_收银POS机_智能pos机_刷卡机_收银系统_个人POS机-谷骐科技【官网】 | 脱硫搅拌器厂家-淄博友胜不锈钢搅拌器厂家| 芜湖厨房设备_芜湖商用厨具_芜湖厨具设备-芜湖鑫环厨具有限公司 控显科技 - 工控一体机、工业显示器、工业平板电脑源头厂家 | 矿用履带式平板车|探水钻机|气动架柱式钻机|架柱式液压回转钻机|履带式钻机-启睿探水钻机厂家 | 螺杆泵_中成泵业| 肉嫩度仪-凝胶测试仪-国产质构仪-气味分析仪-上海保圣实业发展有限公司|总部 | 临沂招聘网_人才市场_招聘信息_求职招聘找工作请认准【马头商标】 | 检验科改造施工_DSA手术室净化_导管室装修_成都特殊科室建设厂家_医疗净化工程公司_四川华锐 | 温州中研白癜风专科_温州治疗白癜风_温州治疗白癜风医院哪家好_温州哪里治疗白癜风 | 彼得逊采泥器-定深式采泥器-电动土壤采样器-土壤样品风干机-常州索奥仪器制造有限公司 | 电位器_轻触开关_USB连接器_广东精密龙电子科技有限公司 | 杭州高温泵_热水泵_高温油泵|昆山奥兰克泵业制造有限公司 | 清管器,管道清管器,聚氨酯发泡球,清管球 - 承德嘉拓设备 | 玖容气动液压设备有限公司-气液增压缸_压力机_增压机_铆接机_增压器 | 手术室净化厂家-成都做医院净化工程的公司-四川华锐-15年特殊科室建设经验 | 无轨电动平车_轨道平车_蓄电池电动平车★尽在新乡百特智能转运设备有限公司 | 全自动贴标机-套标机-工业热风机-不干胶贴标机-上海厚冉机械 | 依维柯自动挡房车,自行式国产改装房车,小型房车价格,中国十大房车品牌_南京拓锐斯特房车 - 南京拓锐斯特房车 | 玉米加工设备,玉米深加工机械,玉米糁加工设备.玉米脱皮制糁机 华豫万通粮机 | 干粉砂浆设备_干混砂浆生产线_腻子粉加工设备_石膏抹灰砂浆生产成套设备厂家_干粉混合设备_砂子烘干机--郑州铭将机械设备有限公司 | 机械加工_绞车配件_立式离心机_减速机-洛阳三永机械厂 | 杭州高温泵_热水泵_高温油泵|昆山奥兰克泵业制造有限公司 | 济南网站建设|济南建网站|济南网站建设公司【济南腾飞网络】【荐】 | SMC-ASCO-CKD气缸-FESTO-MAC电磁阀-上海天筹自动化设备官网 | 柔性测斜仪_滑动测斜仪-广州杰芯科技有限公司 | 中细软知识产权_专业知识产权解决方案提供商| 千淘酒店差旅平台-中国第一家针对TMC行业的酒店资源供应平台 | 登车桥动力单元-非标液压泵站-非标液压系统-深圳市三好科技有限公司 | 代做标书-代写标书-专业标书文件编辑-「深圳卓越创兴公司」 | 游戏版号转让_游戏资质出售_游戏公司转让-【八九买卖网】 | 珠宝展柜-玻璃精品展柜-首饰珠宝展示柜定制-鸿钛展柜厂家 | 淘气堡_室内儿童乐园_户外无动力儿童游乐设备-高乐迪(北京) | 全自动真空上料机_粉末真空上料机_气动真空上料机-南京奥威环保科技设备有限公司 | 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 广州展览制作工厂—[优简]直营展台制作工厂_展会搭建资质齐全 | 高压互感器,电流互感器,电压互感器-上海鄂互电气科技有限公司 | 济南侦探调查-济南调查取证-山东私家侦探-山东白豹调查咨询公司 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 |