栈模拟递归遍历目录(深度遍历)

import os
def getALLDirDE(path):
    stack = []#空栈
    stack.append(path)#压栈  如先压进一个栈 a 其目录下有b c 深度遍历  append方法用于在列表末尾添加新的对象 即压入 与之对应的是pop。

    while len(stack) != 0:#处理栈
        dirPath = stack.pop()#pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
        fileList = os.listdir(dirPath)#os.listdir(path) 查看路径里的文件和目录

        #处理文件,如果是普通文件则打印,如果是目录则将该目录地址压栈
        for fileName in fileList:
            fileAbsPath = os.path.join(dirPath,fileName)
            if os.path.isdir(fileAbsPath):#判断是否是目录
                print("目录" + fileName)
                stack.append(fileAbsPath)#如果是目录 调用函数 将拼接好的新路径压栈运行程序
            else:
                print("普通文件:" + fileName)#若不是目录 即是普通文件 则打印出来

getALLDirDE(r"C:Users23678Desktop超星智慧树网课助手浏览器版V1.1.0")
#r的作用是转成原始字符串 不用转义字符了

思路简图

画的有点丑,不要嫌弃 (~ ̄▽ ̄)~

目录遍历

写爬虫时会应用到

原文地址:https://www.cnblogs.com/FSHOU/p/12331497.html