婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python使用sftp實現(xiàn)傳文件夾和文件

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

熱門標簽:南京銷售外呼系統(tǒng)軟件 蓋州市地圖標注 地圖標注微信發(fā)送位置不顯示 315電話機器人廣告 地圖制圖標注位置改變是移位嗎 上海機器人外呼系統(tǒng)哪家好 地圖標注的意義點 房產(chǎn)電銷外呼系統(tǒng) 浙江電銷卡外呼系統(tǒng)好用嗎

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

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

不多說 上代碼

# -*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import paramiko
import os

_XFER_FILE = 'FILE'
_XFER_DIR  = 'DIR'

class MainWindow(object):
    # 構(gòu)造方法
    def __init__(self, arg):
        # 超類調(diào)用
        super(MainWindow, self).__init__()

        # 賦值參數(shù)[字典]
        # 參數(shù)格式 arg = {'ip':'填ip','user':'用戶名','password':'密碼','port':22}
        self.arg = arg
        # 賦值參數(shù)[FTP]
        self.sftp = None

        # 調(diào)試日志
        print self.arg


    # 啟動程序
    def startup(self):
        # 連接FTP
        if self.sftp != None:
            print u'您已經(jīng)成功連接了'
        tmpstr = u'開始連接...用戶名:'+self.arg['user']+u'  密碼:'+self.arg['password']+' IP:'+self.arg['ip']+u' 端口:'+str(self.arg['port'])
        print tmpstr
        try:
            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)閉FTP
        if self.sftp:
            self.sftp.close() 
            print '### disconnect sftp server: %s!'%self.arg['ip']
            self.sftp = None 

    # 處理上傳
    def upload(self, source, target, replace):
        ### 操作數(shù)據(jù)
        # 來源路徑
        source = source.replace('\\', '/')
        # 目標路徑
        target = target.replace('\\', '/')


        ### 驗證數(shù)據(jù)
        if not os.path.exists(source):
            print u'來源資源不存在,請檢查:' + source
            return


        ### 格式數(shù)據(jù)
        # 格式化目標路徑
        self.__makePath(target)


        ### 處理數(shù)據(jù)
        # 文件媒體數(shù)據(jù)(文件類型, 文件名稱)
        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):
        ### 驗證數(shù)據(jù)
        # 判斷目錄存在
        if not os.path.isdir(source):   
            print u'這個函數(shù)是用來傳送本地目錄的'
            return

        ### 處理數(shù)據(jù)
        # 遍歷目錄內(nèi)容,上傳資源
        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)

        ### 重置數(shù)據(jù)
        # 返回上一層目錄
        self.sftp.chdir('..') 

    # 傳送文件
    def uploadFile(self, filepath, filename, replace):
        ### 驗證數(shù)據(jù)
        # 驗證文件類型
        if not os.path.isfile(filepath):
            print u'這個函數(shù)是用來傳送單個文件的'
            return
        # 驗證文件存在
        if not os.path.exists(filepath):
            print u'err:本地文件不存在,檢查一下'+filepath
            return
        # 驗證FTP已連接
        if self.sftp == None:
            print u'sftp 還未鏈接'
            return


        ### 處理數(shù)據(jù)
        # 判斷文件存在是否覆蓋
        if not replace:
            if filename in self.sftp.listdir():
                print u'[*] 這個文件已經(jīng)存在了,選擇跳過:' + filepath + ' -> ' + self.sftp.getcwd() + '/' + filename
                return
        # 上傳文件
        try:
            self.sftp.put(filepath, filename)
            print u'[+] 上傳成功:' + filepath + ' -> ' + self.sftp.getcwd() + '/' + filename
        except Exception as e:
            print u'[+] 上傳失敗:' + filepath + ' because ' + str(e)


    # 獲得文件媒體數(shù)據(jù)({文件/目錄, 文件名稱})
    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, ''


    # 創(chuàng)建目標路徑
    # 說明: 目標路徑不存在則依次創(chuàng)建路徑目錄
    def __makePath(self, target):
        # 切換根目錄
        self.sftp.chdir('/')

        # 分割目標目錄為目錄單元集合
        data = target.split('/')
        # 進入目標目錄, 目錄不存在則創(chuàng)建
        for item in data:
            try:
                self.sftp.chdir(item) 
                print u'要上傳的目錄已經(jīng)存在,選擇性進入合并:' + item
            except:
                self.sftp.mkdir(item)
                self.sftp.chdir(item) 
                print u'要上傳的目錄不存在,創(chuàng)建目錄:' + item




if __name__ == '__main__':
    # """
    # 先熟悉一下sftp有哪些用法  sftp.listdir(可以傳參可以為空) 返回當前目錄下清單列表
    # mkdir 創(chuàng)建目錄對應(yīng)rmdir   sftp.put(本地路徑,遠程要存的文件名) chdir進入子目錄
    # """
    arg = {'ip':'填ip','user':'填用戶名','password':'填密碼','port':22}

    me  = MainWindow(arg)
    me.startup()
    # 要上傳的本地文件夾路徑
    source = r'E:\xampp\backup\mysql\cto'
    # 上傳到哪里 [遠程目錄]
    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對中文的支持不是很好所以如果出現(xiàn)中文錯誤
修改一下 Python27\Lib\site-packages\paramiko\py3compat.py

還有

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標簽:臨汾 陽泉 克拉瑪依 赤峰 日照 雙鴨山 金華 貴州

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Python使用sftp實現(xiàn)傳文件夾和文件》,本文關(guān)鍵詞  Python,使用,sftp,實現(xiàn),傳,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python使用sftp實現(xiàn)傳文件夾和文件》相關(guān)的同類信息!
  • 本頁收集關(guān)于Python使用sftp實現(xiàn)傳文件夾和文件的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    在线观看日韩电影| 在线看国产一区| 精品亚洲国内自在自线福利| 欧美这里有精品| 亚洲一区二区成人在线观看| 欧美午夜精品久久久| 国产精品自拍av| 韩国一区二区在线观看| 国产欧美日韩综合精品一区二区| 丁香亚洲综合激情啪啪综合| 岛国av在线一区| 国产精品一区免费在线观看| 亚洲国产精品麻豆| 亚洲一线二线三线视频| 麻豆精品国产91久久久久久| 成人免费观看男女羞羞视频| 美女免费视频一区| 色婷婷精品大视频在线蜜桃视频 | 性做久久久久久| 在线视频你懂得一区| 美腿丝袜亚洲一区| 国产欧美中文在线| 欧美精品久久一区二区三区| 国产剧情一区二区三区| 亚洲成人三级小说| 国产人成亚洲第一网站在线播放| 色香蕉久久蜜桃| 成人福利视频网站| 精品中文字幕一区二区小辣椒 | 亚洲精选免费视频| 久久久久久久网| 欧美日韩国产另类不卡| 99热精品国产| 成人91在线观看| 国产成人在线看| 国产剧情一区二区| 国产资源在线一区| 久久国产尿小便嘘嘘| 日韩精品五月天| 亚洲自拍偷拍图区| 亚洲四区在线观看| 国产精品视频一二| 国产三级欧美三级日产三级99 | 久久精品国产一区二区三| 亚洲成人av在线电影| 一区二区三区四区在线| 一区二区在线观看免费视频播放 | 91麻豆精品国产自产在线| 欧美精品一区二区三区蜜臀 | 精品欧美乱码久久久久久1区2区| wwwwxxxxx欧美| 日韩高清不卡在线| 欧洲亚洲精品在线| 中文字幕五月欧美| 韩国毛片一区二区三区| 在线播放国产精品二区一二区四区| 91精品国产综合久久蜜臀 | 久久久久国产精品厨房| 色欧美片视频在线观看| 欧美欧美欧美欧美首页| 欧美三级电影精品| 成人欧美一区二区三区视频网页| 欧美性大战久久久| 免费在线视频一区| 国产91富婆露脸刺激对白| 日日夜夜免费精品| 欧美一卡二卡在线观看| 蜜桃视频免费观看一区| 欧洲精品一区二区三区在线观看| 丝袜诱惑制服诱惑色一区在线观看| 欧洲人成人精品| 国产福利一区二区| 色综合久久久久| 91亚洲精品久久久蜜桃| 亚洲电影你懂得| 亚洲精品中文在线| 免费观看成人鲁鲁鲁鲁鲁视频| 精品一区二区av| 91视视频在线观看入口直接观看www| 91美女视频网站| 日韩美女一区二区三区四区| 国产精品不卡在线观看| 日韩av中文字幕一区二区| av中文字幕亚洲| 26uuu另类欧美亚洲曰本| 亚洲图片有声小说| kk眼镜猥琐国模调教系列一区二区| 欧美人与禽zozo性伦| 亚洲欧洲一区二区在线播放| 美女脱光内衣内裤视频久久影院| 91色.com| 亚洲综合色在线| 91亚洲精品乱码久久久久久蜜桃| 精品国偷自产国产一区| 日本 国产 欧美色综合| 欧美剧情片在线观看| 亚洲欧美日韩中文播放| 不卡一区二区中文字幕| 久久久91精品国产一区二区三区| 日韩高清中文字幕一区| 欧美亚洲国产一卡| 樱桃国产成人精品视频| 欧美色老头old∨ideo| 亚洲五月六月丁香激情| 欧美日韩精品一区二区三区四区| 亚洲一区二区在线免费看| 精品视频1区2区| 人人爽香蕉精品| 国产欧美日韩久久| 91丝袜美腿高跟国产极品老师 | 制服丝袜日韩国产| 国产美女久久久久| 中文字幕在线视频一区| 91蝌蚪国产九色| 亚洲国产综合色| 欧美一级理论片| 成人午夜激情影院| 亚洲欧美日韩一区二区| 欧美一区二区视频在线观看2022| 国产精品77777| 五月天亚洲精品| 欧美国产亚洲另类动漫| 3d动漫精品啪啪一区二区竹菊| 亚洲欧美日韩一区二区三区在线观看| 欧美中文字幕一二三区视频| 久久99精品国产麻豆婷婷| 一区二区三区四区在线免费观看 | 国产精品另类一区| 日韩欧美一二区| 欧美一区二区三区视频免费播放| thepron国产精品| 国产成人av电影免费在线观看| 亚洲成人7777| 亚洲自拍偷拍图区| 亚洲欧美自拍偷拍色图| 国产精品久久久久久久裸模| 久久一区二区三区四区| 精品少妇一区二区三区视频免付费| 欧美午夜一区二区| 欧日韩精品视频| 欧美亚洲国产一区二区三区va| 成人免费视频app| av电影天堂一区二区在线| 99久久婷婷国产综合精品电影 | 久久久美女毛片| 亚洲国产欧美日韩另类综合 | 欧美一级艳片视频免费观看| 欧美亚洲一区三区| 日本不卡在线视频| 国产成人综合在线| www..com久久爱| 在线观看日韩一区| 精品国产乱码久久| ㊣最新国产の精品bt伙计久久| 亚洲色图一区二区| 亚洲成a人v欧美综合天堂下载| 轻轻草成人在线| 成人白浆超碰人人人人| 91女厕偷拍女厕偷拍高清| 日韩欧美久久久| 亚洲黄色免费电影| 国产精品1024| 欧美伊人精品成人久久综合97| 欧美xxx久久| 综合久久一区二区三区| 天堂av在线一区| 国产成人免费视频网站高清观看视频| 91在线观看成人| 国产清纯美女被跳蛋高潮一区二区久久w | 色伊人久久综合中文字幕| 欧美伦理视频网站| 亚洲欧美色综合| 成人毛片视频在线观看| caoporn国产一区二区| 国产欧美日韩三级| 国产黑丝在线一区二区三区| 欧美色图在线观看| 亚洲一区在线播放| 欧美性生活一区| 艳妇臀荡乳欲伦亚洲一区| 99综合影院在线| 亚洲人精品午夜| 91丨porny丨国产| 亚洲一区二区三区中文字幕| 91女厕偷拍女厕偷拍高清| 日韩毛片高清在线播放| 99免费精品视频| 亚洲成a人v欧美综合天堂下载| 在线观看不卡视频| 午夜精品成人在线| 欧美sm极限捆绑bd| 国产一区二区不卡在线| 国产精品三级在线观看| 色乱码一区二区三区88| 亚洲第一福利一区| 91精品久久久久久久91蜜桃| 九一久久久久久| 亚洲摸摸操操av| 精品欧美久久久| 在线看日本不卡|