最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)FTP上傳文件或文件夾實(shí)例(遞歸)

 更新時(shí)間:2017年01月16日 16:15:36   作者:xudacheng06  
本篇文章主要介紹了Python實(shí)現(xiàn)FTP上傳文件或文件夾實(shí)例(遞歸),具有一定的參考價(jià)值,有興趣的可以了解一下。

本文實(shí)例講述了Python實(shí)現(xiàn)FTP上傳文件或文件夾實(shí)例。分享給大家供大家參考。具體如下:

import sys 
import os 
import json 
from ftplib import FTP 
 
_XFER_FILE = 'FILE' 
_XFER_DIR = 'DIR' 
 
class Xfer(object): 
  ''''' 
  @note: upload local file or dirs recursively to ftp server 
  ''' 
  def __init__(self): 
    self.ftp = None 
   
  def __del__(self): 
    pass 
   
  def setFtpParams(self, ip, uname, pwd, port = 21, timeout = 60):     
    self.ip = ip 
    self.uname = uname 
    self.pwd = pwd 
    self.port = port 
    self.timeout = timeout 
   
  def initEnv(self): 
    if self.ftp is None: 
      self.ftp = FTP() 
      print '### connect ftp server: %s ...'%self.ip 
      self.ftp.connect(self.ip, self.port, self.timeout) 
      self.ftp.login(self.uname, self.pwd)  
      print self.ftp.getwelcome() 
   
  def clearEnv(self): 
    if self.ftp: 
      self.ftp.close() 
      print '### disconnect ftp server: %s!'%self.ip  
      self.ftp = None 
   
  def uploadDir(self, localdir='./', remotedir='./'): 
    if not os.path.isdir(localdir):  
      return 
    self.ftp.cwd(remotedir)  
    for file in os.listdir(localdir): 
      src = os.path.join(localdir, file) 
      if os.path.isfile(src): 
        self.uploadFile(src, file) 
      elif os.path.isdir(src): 
        try:  
          self.ftp.mkd(file)  
        except:  
          sys.stderr.write('the dir is exists %s'%file) 
        self.uploadDir(src, file) 
    self.ftp.cwd('..') 
   
  def uploadFile(self, localpath, remotepath='./'): 
    if not os.path.isfile(localpath):  
      return 
    print '+++ upload %s to %s:%s'%(localpath, self.ip, remotepath) 
    self.ftp.storbinary('STOR ' + remotepath, open(localpath, 'rb')) 
   
  def __filetype(self, src): 
    if os.path.isfile(src): 
      index = src.rfind('\\') 
      if index == -1: 
        index = src.rfind('/')         
      return _XFER_FILE, src[index+1:] 
    elif os.path.isdir(src): 
      return _XFER_DIR, ''     
   
  def upload(self, src): 
    filetype, filename = self.__filetype(src) 
     
    self.initEnv() 
    if filetype == _XFER_DIR: 
      self.srcDir = src       
      self.uploadDir(self.srcDir) 
    elif filetype == _XFER_FILE: 
      self.uploadFile(src, filename) 
    self.clearEnv()  
         
 
if __name__ == '__main__': 
  srcDir = r"C:\sytst" 
  srcFile = r'C:\sytst\sar.c' 
  xfer = Xfer() 
  xfer.setFtpParams('192.x.x.x', 'jenkins', 'pass') 
  xfer.upload(srcDir)   
  xfer.upload(srcFile) 

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

相關(guān)文章

  • 基于pandas向csv添加新的行和列

    基于pandas向csv添加新的行和列

    這篇文章主要介紹了基于pandas向csv添加新的行和列,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • PyCharm調(diào)用matplotlib繪圖時(shí)圖像彈出問(wèn)題詳解

    PyCharm調(diào)用matplotlib繪圖時(shí)圖像彈出問(wèn)題詳解

    這篇文章主要給大家介紹了關(guān)于PyCharm調(diào)用matplotlib繪圖時(shí)圖像彈出問(wèn)題的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用PyCharm具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-07-07
  • python 監(jiān)聽(tīng)salt job狀態(tài),并任務(wù)數(shù)據(jù)推送到redis中的方法

    python 監(jiān)聽(tīng)salt job狀態(tài),并任務(wù)數(shù)據(jù)推送到redis中的方法

    今天小編就為大家分享一篇python 監(jiān)聽(tīng)salt job狀態(tài),并任務(wù)數(shù)據(jù)推送到redis中的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • PyCharm中New Directory 和 New Python Package的區(qū)別解析

    PyCharm中New Directory 和 New Python 

    python package這是一個(gè)特殊的目錄,因?yàn)樵趧?chuàng)建該python package的時(shí)候,系統(tǒng)會(huì)自動(dòng)地生成一個(gè)py文件, init.py,這篇文章主要介紹了PyCharm中New Directory 和 New Python Package的區(qū)別,需要的朋友可以參考下
    2023-12-12
  • Python3中configparser模塊讀寫ini文件并解析配置的用法詳解

    Python3中configparser模塊讀寫ini文件并解析配置的用法詳解

    這篇文章主要介紹了Python3中configparser模塊讀寫ini文件并解析配置的用法詳解,需要的朋友可以參考下
    2020-02-02
  • Python中字符串,列表與字典的常用拼接方法總結(jié)

    Python中字符串,列表與字典的常用拼接方法總結(jié)

    有時(shí)在數(shù)據(jù)處理時(shí),需要對(duì)數(shù)據(jù)進(jìn)行拼接處理,比如字符串的拼接、列表的拼接等,本文主要是介紹了字符串、列表、字典常用的拼接方法,希望對(duì)大家有所幫助
    2024-02-02
  • 結(jié)合Python的SimpleHTTPServer源碼來(lái)解析socket通信

    結(jié)合Python的SimpleHTTPServer源碼來(lái)解析socket通信

    SimpleHTTPServer是Python中一個(gè)現(xiàn)成的HTTP服務(wù)器例子,本文我們將結(jié)合Python的SimpleHTTPServer源碼來(lái)解析socket通信,我們先來(lái)看一下socket的基本概念:
    2016-06-06
  • 使用PDB模式調(diào)試Python程序介紹

    使用PDB模式調(diào)試Python程序介紹

    這篇文章主要介紹了使用PDB模式調(diào)試Python程序介紹,本文講解了PDB模式的使用語(yǔ)法,著重講解PDB模式下的常用命令,需要的朋友可以參考下
    2015-04-04
  • Python實(shí)現(xiàn)將HTML轉(zhuǎn)為PDF/圖片/XML/XPS格式

    Python實(shí)現(xiàn)將HTML轉(zhuǎn)為PDF/圖片/XML/XPS格式

    網(wǎng)頁(yè)內(nèi)容是信息傳播的主要形式之一,這篇文章主要和大家介紹了如何使用Python實(shí)現(xiàn)將HTML分別轉(zhuǎn)為PDF/圖片/XML/XPS格式等,需要的可以參考下
    2024-03-03
  • python輸入多行的方法總結(jié)

    python輸入多行的方法總結(jié)

    Python中的Input()函數(shù)在輸入時(shí),遇到回車符,那么一次輸入就結(jié)束了,這不能滿足輸入多行文本并且行數(shù)也不確定的情形,當(dāng)然輸入空行也是允許的,本文給大家總結(jié)了python輸入多行的方法,需要的朋友可以參考下
    2024-04-04

最新評(píng)論

宣汉县| 通山县| 收藏| 开阳县| 河源市| 裕民县| 保康县| 迭部县| 阿拉善右旗| 龙山县| 赫章县| 西乌珠穆沁旗| 商都县| 康平县| 五大连池市| 正安县| 修文县| 叙永县| 长兴县| 三都| 沛县| 腾冲县| 镇巴县| 海晏县| 武冈市| 平阳县| 凤山县| 彰武县| 乳源| 香格里拉县| 大洼县| 兰州市| 阳江市| 睢宁县| 乐业县| 鄄城县| 德钦县| 阳城县| 香格里拉县| 永福县| 盐池县|