python的遍历模式

python的遍历在程序中很重要,详细了解一下遍历模式,可以应用于任务分发,数据的读写中。

python的 递归遍历目录:

import osdef getAllDirRE(path, sp = ""):    #得到当前目录下所有的文件    filesList = os.listdir(path)    #处理每一个文件    sp += "   "    for fileName in filesList:        #判断是否是路径(用绝对路径)        fileAbsPath = os.path.join(path, fileName)        if os.path.isdir(fileAbsPath):            print(sp + "目录:", fileName)            #递归调用            getAllDirRE(fileAbsPath, sp)        else:            print(sp + "普通文件:", fileName)getAllDirRE(r"C:\Users\xlg\Desktop\Python-1704\day09\temp\dir")python栈模拟递归遍历目录(深度遍历):
import osdef getAllDirDE(path):    stack = []    stack.append(path)    #处理栈,当栈为空的时候结束循环    while len(stack) != 0:        #从栈里取出数据        #[]        dirPath = stack.pop()        #print(dirPath)        #目录下所有文件        filesList = os.listdir(dirPath)        #print(filesList)        #处理每一个文件,如果是普通文件则打印出来,如果是目录则将该目录的地址压栈        for fileName in filesList:            fileAbsPath = os.path.join(dirPath, fileName)            if os.path.isdir(fileAbsPath):                #是目录就压栈                print("目录:" + fileName)                stack.append(fileAbsPath)                #["B", "E", "F"]            else:                #打印普通文件                print("普通:" + fileName)getAllDirDE(r"C:\Users\xlg\Desktop\Python-1704\day09\temp\dir")python的广度遍历目录(队列):
import osimport collectionsdef getAllDirQU(path):    queue = collections.deque()    #进队    queue.append(path)    while len(queue) != 0:        #出队数据        dirPath = queue.popleft()        #找出所有的文件        filesList = os.listdir(dirPath)        for fileName in filesList:            #绝对路径            fileAbsPath = os.path.join(dirPath, fileName)            #判断是否是目录,是目录就进队,不是就打印            if os.path.isdir(fileAbsPath):                print("目录:" + fileName)                queue.append(fileAbsPath)            else:                print("普通文件:" + fileName)getAllDirQU(r"C:\Users\xlg\Desktop\Python-1704\day09\temp\dir")
 
 

相关推荐