Python零基础学习笔记(三十八)—— 递归方法、栈、队列模拟遍历目录

简介: 用递归方法遍历目录:使用到os模块,所以要先引入os模块处理文件:    核心是判断文件是否是目录文件,如果是目录文件就进行递归处理,直接将文件名打印出来下面是文件代码:import osdef getAllDir(path, sp = " "): fileList = os.

用递归方法遍历目录:

使用到os模块,所以要先引入os模块

处理文件:

    核心是判断文件是否是目录文件,如果是目录文件就进行递归处理,直接将文件名打印出来

下面是文件代码:

import os
def getAllDir(path, sp = " "):
    fileList = os.listdir(path)
    #处理每一个文件
    sp += "    "
    for fileName in fileList:
        #判断是否是路径(用绝对路径)
        absFliePath = os.path.join(path, fileName)
        if os.path.isdir(absFliePath):
            print(sp + "目录:", fileName)
            #递归调用
            getAllDir(absFliePath, sp)
        else:
            print(sp + "普通文件", fileName)
    return fileList
getAllDir(r"C:\Users\Administrator\PycharmProjects\untitled\day011")


栈方法:

import os
def getAllDirDE(path):
    stack = []
    stack.append(path)
    #处理栈,当栈为空的时候结束循环
    while len(stack) != 0:
        dirPath = stack.pop()
        fileDir = os.listdir(dirPath)
        for fileName in fileDir:
            fileAbsPath = os.path.join(dirPath, fileName)
            if os.path.isdir(fileAbsPath):
                print("目录:"+ fileName)
                stack.append(fileAbsPath)
            else:
                print("普通文件:", fileName)
getAllDirDE(r"C:\Users\Administrator\PycharmProjects\untitled\day011")

队列方法:
import os
import collections
def getAllDir(path):
    queue = collections.deque()
    #进队
    queue.append(path)
    while len(queue) != 0:
        dirPath = queue.popleft()
        fileList = os.listdir(dirPath)
        for fileName in fileList:
            fileAbsPath = os.path.join(dirPath, fileName)
            if os.path.isdir(fileAbsPath):
                print("目录:"+fileName)
                queue.append(fileAbsPath)
            else:
                print("文件:"+fileName)

getAllDir(r"C:\Users\Administrator\PycharmProjects\untitled\day011")

相关文章
|
8天前
|
算法 定位技术 Python
震惊!Python 图结构竟然可以这样玩?DFS&BFS 遍历技巧大公开
在 Python 编程中,图是一种重要的数据结构,而深度优先搜索(DFS)和广度优先搜索(BFS)是遍历图的两种关键算法。本文将通过定义图的数据结构、实现 DFS 和 BFS 算法,并通过具体示例展示其应用,帮助读者深入理解这两种算法。DFS 适用于寻找路径和检查图连通性,而 BFS 适用于寻找最短路径。掌握这些技巧,可以更高效地解决与图相关的复杂问题。
21 2
|
12天前
|
Python
不容错过!Python中图的精妙表示与高效遍历策略,提升你的编程艺术感
本文介绍了Python中图的表示方法及遍历策略。图可通过邻接表或邻接矩阵表示,前者节省空间适合稀疏图,后者便于检查连接但占用更多空间。文章详细展示了邻接表和邻接矩阵的实现,并讲解了深度优先搜索(DFS)和广度优先搜索(BFS)的遍历方法,帮助读者掌握图的基本操作和应用技巧。
32 4
|
13天前
|
算法 Python
Python图论探索:从理论到实践,DFS与BFS遍历技巧让你秒变技术大牛
图论在数据结构与算法中占据重要地位,应用广泛。本文通过Python代码实现深度优先搜索(DFS)和广度优先搜索(BFS),帮助读者掌握图的遍历技巧。DFS沿路径深入搜索,BFS逐层向外扩展,两者各具优势。掌握这些技巧,为解决复杂问题打下坚实基础。
26 2
|
1月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
211 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
1月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
139 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
1月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
149 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
1月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
64 1
|
1月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
85 1
|
1月前
|
Python
Python实用记录(四):os模块-去后缀或者改后缀/指定目录下图片或者子目录图片写入txt/csv
本文介绍了如何使用Python的os模块来操作文件,包括更改文件后缀、分割文件路径和后缀、将指定目录下的所有图片写入txt文档,以及将指定目录下所有子目录中的图片写入csv文档,并为每个子目录分配一个标签。
19 1
|
Python
Python|如何用递归解决汉诺塔问题?
Python|如何用递归解决汉诺塔问题?
121 0