麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > Python > 正文

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

2024-09-09 19:02:58
字體:
供稿:網(wǎng)友

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

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

深度遍歷&廣度遍歷:

思路:

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

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.判斷原子級(jí)路徑是否是文件

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

3.判斷原子級(jí)目錄是否是目錄

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

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)子級(jí)文件不存在 或者目標(biāo)子級(jí)文件存在但是該文件與原子級(jí)文件大小不一致 則需要復(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í)候手動(dòng)刷新一下,可能會(huì)加快寫入            wf.flush()          # 讀寫完成關(guān)閉文件          rf.close()          wf.close()# 傳入需要復(fù)制的目錄和需要復(fù)制到的目標(biāo)目錄sPath = ""tPath = ""copyDir(sPath,tPath)
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美黄色片免费看 | 欧美日韩在线播放 | 黄色av网站在线观看 | 91av在线免费播放 | 亚洲片在线观看 | 国产免费福利视频 | 亚洲天堂午夜 | 一级国产免费 | 精品一区二区免费视频视频 | 成人男女啪啪免费观看网站四虎 | 亚洲网站在线观看视频 | 欧美黄色一级生活片 | 精品国产一区二区三区天美传媒 | 久久精品免费网站 | 中文字幕在线观看91 | 伊人99在线 | 怦然心动50免费完整版 | 在线区| 国产手机在线视频 | 久久国产一级片 | 91重口视频 | 好吊色欧美一区二区三区四区 | 人成免费a级毛片 | 亚洲看片网| 91毛片网站 | 日韩毛片毛片久久精品 | 黄色大片在线观看 | 国产毛片aaa一区二区三区视频 | 日韩黄站 | 欧美成人小视频 | 亚洲免费高清 | 综合日韩欧美 | 18视频在线观看娇喘 | 精品一区二区三区免费爱 | 97se亚洲综合在线韩国专区福利 | 免费在线观看亚洲 | 亚洲福利在线免费观看 | 久久久久久久久久久影视 | 日日鲁夜夜视频热线播放 | v片在线看 | 91久久久久久久久久久久久 |