摘要:遞歸遍歷目錄和文件作業和習題獲取當前目錄下所有文件及文件目錄遍歷列表拼接絕對路徑目錄文件棧深度遍歷目錄文件隊列廣度遍歷目錄文件復制目錄和文件復制目錄如果源目錄不存在直接停止如果目標文件不存在或者如果該文件
遞歸遍歷目錄和文件
import os path = r"F:PycharmProjectsasic gram作業和習題 est" def getAllFileAndDir(path): # 獲取當前目錄下所有文件及文件目錄 fileList = os.listdir(path) # print(fileList) # 遍歷fileList列表 for fileName in fileList: # isdir isfile # print(fileName) # 拼接絕對路徑 absFile = os.path.join(path,fileName) if os.path.isdir(absFile): print(absFile+"---目錄") getAllFileAndDir(absFile) else: print(absFile+"---文件") getAllFileAndDir(path)棧 深度遍歷
import collections def getAllFileAndDir(sourcePath): stack = collections.deque() stack.append(sourcePath) while len(stack) != 0: path = stack.pop() fileList = os.listdir(path) for fileName in fileList: absFile = os.path.join(path, fileName) if os.path.isdir(absFile): print(absFile+"---目錄") stack.append(absFile) else: print(absFile+"---文件") getAllFileAndDir(path)隊列 廣度遍歷
def getAllFileAndDir(sourcePath): queue = collections.deque() queue.append(sourcePath) while len(queue) !=0: path = queue.popleft() fileList = os.listdir(path) for fileName in fileList: absFile = os.path.join(path, fileName) if os.path.isdir(absFile): print(absFile+"---目錄") queue.append(absFile) else: print(absFile+"---文件") getAllFileAndDir(path)復制目錄和文件
import os # 復制目錄 def copyDir(sourDir,targetDir): if not os.path.exists(sourDir): print("如果源目錄不存在,直接停止") return if not os.path.exists(targetDir): os.makedirs(targetDir) listName = os.listdir(sourDir) for dirNameAndFileName in listName: sourAbsPath = os.path.join(sourDir,dirNameAndFileName) targetAbsPath = os.path.join(targetDir,dirNameAndFileName) if os.path.isdir(sourAbsPath): copyDir(sourAbsPath,targetAbsPath) if os.path.isfile(sourAbsPath): # 如果目標文件不存在, 或者 如果該文件已經存在但是文件大小不一樣 if (not os.path.exists(targetAbsPath)) or (os.path.exists(targetAbsPath) and (os.path.getsize(sourAbsPath) != os.path.getsize(targetAbsPath))): rf = open(sourAbsPath,"rb") wf = open(targetAbsPath,"wb") while True: content = rf.read(1024*1024) if len(content) == 0: break wf.write(content) wf.flush() wf.close() rf.close() sPath = r"F:PycharmProjectsasic gram作業和習題 est" tPath = r"F:PycharmProjectsasic gram作業和習題 estNew" copyDir(sPath, tPath)文件復制實例
1.一個函數接受文件夾的名稱作為輸入參數,請將該文件夾中的所有文件復制到 文件夾名-副本 中去,請補充缺失的代碼. (20分)
def copyFile(sPath)
2.題1復制過程中,每隔一秒打印一次復制進度(即當前已復制個數/總文件個數)(15分)
import os import collections import time import sys def getFileNum(sPath): num = 0 stack = collections.deque() stack.append(sPath) while len(stack) != 0: path = stack.pop() fileList = os.listdir(path) for fileName in fileList: absFile = os.path.join(path, fileName) if os.path.isdir(absFile): stack.append(absFile) else: num += 1 return num def copyFile(sPath): tPath = r"F:PycharmProjectsasic gram作業和習題Anaconda3-副本" stack1 = collections.deque() stack1.append(sPath) stack2 = collections.deque() stack2.append(tPath) timepoint = 1 filenum = 0 while len(stack1) != 0: sPath = stack1.pop() tPath = stack2.pop() if not os.path.exists(tPath): os.makedirs(tPath) listName = os.listdir(sPath) for filename in listName: absfile = os.path.join(sPath, filename) tabsfile = os.path.join(tPath, filename) if os.path.isdir(absfile): stack1.append(absfile) stack2.append(tabsfile) else: rf = open(absfile, "rb") wf = open(tabsfile, "wb") while True: content = rf.read(1024*1024) if len(content) == 0: break wf.write(content) # 刷新緩沖區 wf.flush() if time.clock()//1 == timepoint: sys.stdout.write(" 進度:%d/%d"%(filenum,num)) timepoint += 1 wf.close() rf.close() filenum += 1 sys.stdout.write(" 進度:%d/%d" % (num, num)) sPath = r"F:PycharmProjectsasic gram作業和習題Anaconda3" num = getFileNum(sPath) # print(num) start_time = time.clock() copyFile(sPath)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41661.html
摘要:類遍歷文件夾目錄功能返回一個數組,表示該目錄中的所有子文件或目錄。遍歷構造方法中給出的目錄會獲取目錄中所有文件文件夾的名稱把獲取到的多個名稱存儲到一個類型的數組中這個遍歷出來的顯示文件夾或者文件的路徑 package com.itheima.demo01.File; import java.io.File; /* File類遍歷(文件夾)目錄功能 - public String...
摘要:阿里聚安全的應用漏洞掃描服務,可以檢測出應用的文件目錄遍歷風險。阿里聚安全對開發者建議對重要的壓縮包文件進行數字簽名校驗,校驗通過才進行解壓。 1、ZIP文件目錄遍歷簡介 因為ZIP壓縮包文件中允許存在../的字符串,攻擊者可以利用多個../在解壓時改變ZIP包中某個文件的存放位置,覆蓋掉應用原有的文件。如果被覆蓋掉的文件是動態鏈接so、dex或者odex文件,輕則產生本地拒絕服務漏洞...
摘要:技術概述技術概述把內存中的數據存儲到持久化設備上這個動作稱為輸出寫操作把持久設備上的數據讀取到內存中的這個動作稱為輸入讀操作操作把上面的這種輸入和輸出動作稱為操作類的概述和作用類的概述和作用的概念類是文件和目錄路徑名的抽象表示形式中把文件或 01IO技術概述.avi(02:49) * A:IO技術概述 * a: Output * 把內存中的數據存儲到持久化設備上...
摘要:刪除刪除只能刪除文件,若為目錄則報錯若文件正在使用,下會直接報錯,下會在目錄表中刪除記錄,但文件還在與一樣的作用刪除目錄,目錄必須為空,否則報錯遞歸刪除空目錄刪除整個目錄不管此目錄下有多少目錄和文件新建新建新建文件夾,若倒數第二層文件夾不存 刪除 # ==================刪除================== # 只能刪除文件,若為目錄則報錯 # 若文件正在使用,Wi...
摘要:練習遞歸打印多級目錄需求遍歷文件夾及文件夾的子文件夾定義一個方法參數傳遞類型的目錄方法中對目錄進行遍歷打印被遍歷的目錄名稱對遍歷得到的對象進行判斷判斷是否是文件夾是一個文件夾則繼續遍歷這個文件夾我們發現方法就是傳遞文件夾遍歷文件夾的方法所以 package com.itheima.demo02.Recursion; import java.io.File; /* 練習: 遞歸打...
閱讀 3041·2021-09-22 15:52
閱讀 2912·2019-08-30 15:55
閱讀 2707·2019-08-30 15:53
閱讀 2460·2019-08-30 13:21
閱讀 1627·2019-08-30 13:10
閱讀 2486·2019-08-26 12:09
閱讀 2572·2019-08-26 10:33
閱讀 1809·2019-08-23 18:06