目录遍历的三种方法

方法一:递归遍历目录

import os
def 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\Administrator\Python学习")

方法二:栈模拟递归遍历目录(深度遍历)

import os

def getAllDirDE(path):
    stack = []
    stack.append(path)
    while len(stack) != 0:
        dirPath = stack.pop()
        filesList = os.listdir(dirPath)
        for filename in filesList:
            fileAbsPath = os.path.join(dirPath,filename)
            if os.path.isdir(fileAbsPath):
                print("目录:" + filename)
                stack.append(fileAbsPath)
            else:
                print("文件:" + filename)

getAllDirDE(r"C:\Users\Administrator\Python学习")

方法三:队列模拟递归遍历目录(广度遍历)

import os
import collections

def getAllDirGE(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)

getAllDirGE(r"C:\Users\Administrator\Python学习")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 树的简介 栈、队列、链表等数据结构,都是顺序数据结构。而树是非顺序数据结构。树型结构是一类非常重要的非线性结构。直...
    黎贝卡beka阅读 15,888评论 4 25
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,887评论 1 32
  • 栈、队列、链表等数据结构,都是顺序数据结构。而树是非顺序数据结构。树型结构是一类非常重要的非线性结构。直观地,树型...
    小小的白菜阅读 5,302评论 0 4
  • 一直以来,我都很少使用也避免使用到树和图,总觉得它们神秘而又复杂,但是树在一些运算和查找中也不可避免的要使用到,那...
    24K男阅读 11,719评论 5 14
  • 什么是二叉树? 引用自百度百科:在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(...
    AnICoo1阅读 5,202评论 0 1

友情链接更多精彩内容