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

python 實(shí)現(xiàn)目錄復(fù)制的三種小結(jié)

 更新時(shí)間:2019年12月04日 16:38:09   作者:weixin_42269099  
今天小編就為大家分享一篇python 實(shí)現(xiàn)目錄復(fù)制的三種小結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

復(fù)制目錄: 包含多層子目錄

方法: 遞歸, 深度遍歷,廣度遍歷

深度遍歷&廣度遍歷:

思路:

1.獲得源目錄子級目錄,并設(shè)置目標(biāo)目錄的子級路徑

1.1在此就創(chuàng)建兩個(gè)棧(或者隊(duì)列),將原目錄和目標(biāo)目錄分別添加到棧(或者隊(duì)列)里面,一般用append添加,加在棧的頂部,隊(duì)列的后部

1.2深度遍歷 從棧的頂部取出一個(gè)原路徑去判斷,同時(shí)用同樣的方式取出目標(biāo)路徑(棧和隊(duì)列都類似于list,都可以用list實(shí)現(xiàn))

廣度遍歷 從隊(duì)列的前面取出一個(gè)原路徑去判斷,同時(shí)用同樣的方式取出目標(biāo)路徑

2.判斷原子級路徑是否是文件

2.1如果目標(biāo)子級文件不存在 或者目標(biāo)子級文件存在,但是子級大小不一致,則復(fù)制

3.判斷原子級目錄是否是目錄

3.1.遞歸 調(diào)用自己,把自己的子級目錄當(dāng)作源文件,復(fù)制到目標(biāo)子級目錄

3.2.深度遍歷 廣度遍歷 都將原目錄和目標(biāo)目錄添加(append)到棧(隊(duì)列)的后面'''

# 深度遍歷 廣度遍歷(僅取出來的方式不一樣)
# 導(dǎo)入模塊
import os, collections
 
def copyDir(sourcePath,targetPath):
  # 傳入原目錄,和需要復(fù)制后的目標(biāo)目錄
  # 判斷需要復(fù)制的目錄是否存在,如果不存在就返回
  if not os.path.isdir(sourcePath):
    return '源目錄不存在'
  # 創(chuàng)建兩個(gè)棧,一個(gè)用來存放原目錄路徑,另一個(gè)用來存放需要復(fù)制的目標(biāo)目錄
  sourceStack = collections.deque()
  sourceStack.append(sourcePath)
 
  targetStack = collections.deque()
  targetStack.append(targetPath)
  # 創(chuàng)建一個(gè)循環(huán)當(dāng)棧里面位空時(shí)結(jié)束循環(huán)
  while True:
    if len(sourceStack) == 0:
      break
    # 將路徑從棧的上部取出
    sourcePath = sourceStack.pop() #sourcePath = sourceStack.popleft()
    # 遍歷出該目錄下的所有文件和目錄
    listName = os.listdir(sourcePath)
 
    # 將目錄路徑取出來
    targetPath = targetStack.pop() #targetPath = targetStack.popleft()
    # 判斷該目標(biāo)目錄是否存在,如果不存在就創(chuàng)建
    if not os.path.isdir(targetPath):
      os.makedirs(targetPath)
    # 遍歷目錄下所有文件組成的列表,判斷是文件,還是目錄
    for name in listName:
      # 拼接新的路徑
      sourceAbs = os.path.join(sourcePath, name)
      targetAbs = os.path.join(targetPath, name)
      # 判斷是否時(shí)目錄
      if os.path.isdir(sourceAbs):
        # 判斷目標(biāo)路徑是否存在,如果不存在就創(chuàng)建一個(gè)
        if not os.path.exists(targetAbs):
          os.makedirs(targetAbs)
        # 將新的目錄添加到棧的頂部
        sourceStack.append(sourceAbs)
        targetStack.append(targetAbs)
      # 判斷是否是文件
      if os.path.isfile(sourceAbs):
        # 1.如果目標(biāo)子級文件不存在 或者目標(biāo)子級文件存在但是該文件與原子級文件大小不一致 則需要復(fù)制
        if (not os.path.exists(targetAbs)) or (os.path.exists(targetAbs) and os.path.getsize(targetAbs) != os.path.getsize(targetAbs)):
          rf = open(sourceAbs, mode='rb')
          wf = open(targetAbs, mode='wb')
          while True:
            # 一點(diǎn)一點(diǎn)讀取,防止當(dāng)文件較大時(shí)候內(nèi)存吃不消
            content = rf.read(1024*1024*10)
            if len(content) == 0:
              break
            wf.write(content)
            # 寫入緩沖區(qū)時(shí)候手動刷新一下,可能會加快寫入
            wf.flush()
          # 讀寫完成關(guān)閉文件
          rf.close()
          wf.close()
# 傳入需要復(fù)制的目錄和需要復(fù)制到的目標(biāo)目錄
sPath = ""
tPath = ""
copyDir(sPath,tPath)

遞歸遍歷:

遞歸思路:

1.定義一個(gè)函數(shù)來復(fù)制目錄,需要傳入原目錄和目標(biāo)目錄

2.判斷源目錄是否是一個(gè)目錄--不是就終止

3.判斷目標(biāo)目錄是否存在--不存在,新建

4.遍歷源目錄,

 
import os
 
 
def copyDir(sourceDir,targetDir):
 
  if not os.path.isdir(sourceDir):
 
    return "源目錄不存在"
 
  if not os.path.exists(targetDir):
 
    os.makedirs(targetDir)
 
  listName = os.listdir(sourceDir)
 
  for name in listName:
 
    sourceAbs = os.path.join(sourceDir,name)
 
    targetAbs = os.path.join(targetDir,name)
 
  if os.path.isdir(sourceAbs):
 
    #創(chuàng)建目標(biāo)目錄
 
    if not os.path.exists(targetAbs):
 
      os.makedirs(targetAbs)
 
    copyDir(sourceAbs,targetAbs)
 
  if os.path.isfile(sourceAbs):
 
  # 1.如果目標(biāo)子級文件不存在 或者 目標(biāo)子級文件存在但是該文件與原子級文件大小不一致 則需要復(fù)制
 
    if (not os.path.exists(targetAbs)) or (os.path.exists(targetAbs) and os.path.getsize(targetAbs) != os.path.getsize(sourceAbs)):
 
      rf = open(sourceAbs,mode="rb")
 
      wf = open(targetAbs,mode="wb")
 
      while True:
 
        content = rf.read(1024*1024*10)
 
        if len(content) == 0:
 
          break
 
        wf.write(content)
 
        wf.flush()
 
        rf.close()
 
        wf.close()
 
# 測試
 
sPath = ""
 
tPath = ""
 
copyDir(sPath,tPath)

以上這篇python 實(shí)現(xiàn)目錄復(fù)制的三種小結(jié)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)文字pdf轉(zhuǎn)換圖片pdf效果

    Python實(shí)現(xiàn)文字pdf轉(zhuǎn)換圖片pdf效果

    當(dāng)我們把word轉(zhuǎn)化為pdf,wps默認(rèn)轉(zhuǎn)化為文字pdf,而圖片pdf要會員。所以本文將通過Python語言實(shí)現(xiàn)文字pdf轉(zhuǎn)換圖片pdf,需要的可以參考一下
    2022-04-04
  • python 去除txt文本中的空格、數(shù)字、特定字母等方法

    python 去除txt文本中的空格、數(shù)字、特定字母等方法

    今天小編就為大家分享一篇python 去除txt文本中的空格、數(shù)字、特定字母等方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python 3.10 的首個(gè) PEP 誕生,內(nèi)置類型 zip() 迎來新特性(推薦)

    Python 3.10 的首個(gè) PEP 誕生,內(nèi)置類型 zip() 迎來新特性(推薦)

    這篇文章主要介紹了Python 3.10 的首個(gè) PEP 誕生,內(nèi)置類型 zip() 迎來新特性,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • django-filter和普通查詢的例子

    django-filter和普通查詢的例子

    今天小編就為大家分享一篇django-filter和普通查詢的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python??UPX?is?not?available問題解決方法

    python??UPX?is?not?available問題解決方法

    這篇文章主要介紹了python?UPX?is?not?available問題解決,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • python imread函數(shù)詳解

    python imread函數(shù)詳解

    這篇文章主要介紹了python imread函數(shù)詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • python實(shí)現(xiàn)dbscan算法

    python實(shí)現(xiàn)dbscan算法

    DBSCAN 算法是一種基于密度的空間聚類算法,本文主要介紹了python實(shí)現(xiàn)dbscan算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 純numpy卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫數(shù)字識別的實(shí)踐

    純numpy卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫數(shù)字識別的實(shí)踐

    本文主要介紹了純numpy卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫數(shù)字識別的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Python虛擬環(huán)境virtualenv安裝的詳細(xì)教程保姆級(Windows和linux)

    Python虛擬環(huán)境virtualenv安裝的詳細(xì)教程保姆級(Windows和linux)

    本文詳細(xì)介紹了如何在Linux和Windows系統(tǒng)上安裝和配置virtualenv虛擬環(huán)境,包括依賴包安裝、系統(tǒng)環(huán)境變量設(shè)置、激活和退出環(huán)境,以及在PyCharm中的應(yīng)用和導(dǎo)出依賴文件,需要的朋友可以參考下
    2024-09-09
  • 使用python獲取電腦的磁盤信息方法

    使用python獲取電腦的磁盤信息方法

    今天小編就為大家分享一篇使用python獲取電腦的磁盤信息方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11

最新評論

巫山县| 五河县| 石城县| 罗城| 西盟| 元朗区| 香格里拉县| 鄱阳县| 嘉黎县| 新宁县| 如东县| 将乐县| 五台县| 皋兰县| 莱州市| 磐安县| 大连市| 安塞县| 赣州市| 祁连县| 渑池县| 女性| 广元市| 建平县| 丹凤县| 郯城县| 九龙城区| 吉首市| 大石桥市| 申扎县| 嘉兴市| 肃宁县| 沙洋县| 苏尼特左旗| 额尔古纳市| 潼南县| 周至县| 容城县| 宿州市| 新邵县| 北流市|