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")

相关文章
|
22天前
|
测试技术 API Python
【10月更文挑战第1天】python知识点100篇系列(13)-几种方法让你的电脑一直在工作
【10月更文挑战第1天】 本文介绍了如何通过Python自动操作鼠标或键盘使电脑保持活跃状态,避免自动息屏。提供了三种方法:1) 使用PyAutoGUI,通过安装pip工具并执行`pip install pyautogui`安装,利用`moveRel()`方法定时移动鼠标;2) 使用Pymouse,通过`pip install pyuserinput`安装,采用`move()`方法移动鼠标绝对位置;3) 使用PyKeyboard,同样需安装pyuserinput,模拟键盘操作。文中推荐使用PyAutoGUI,因其功能丰富且文档详尽。
WK
|
8天前
|
Python
Python中format_map()方法
在Python中,`format_map()`方法用于使用字典格式化字符串。它接受一个字典作为参数,用字典中的键值对替换字符串中的占位符。此方法适用于从字典动态获取值的场景,尤其在处理大量替换值时更为清晰和方便。
WK
63 36
|
19天前
|
机器学习/深度学习 数据采集 数据挖掘
11种经典时间序列预测方法:理论、Python实现与应用
本文将总结11种经典的时间序列预测方法,并提供它们在Python中的实现示例。
56 2
11种经典时间序列预测方法:理论、Python实现与应用
|
23天前
|
网络协议 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访问网络视频流的技巧。
95 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
24天前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
97 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
24天前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
95 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
15天前
|
开发者 Python
Python中的魔法方法与运算符重载
在Python的奇妙世界里,魔法方法(Magic Methods)和运算符重载(Operator Overloading)是两个强大的特性,它们允许开发者以更自然、更直观的方式操作对象。本文将深入探讨这些概念,并通过实例展示如何利用它们来增强代码的可读性和表达力。
|
23天前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
53 1
|
23天前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
66 1
|
23天前
|
Linux Python
Python获得本机本地ip地址的方法
【10月更文挑战第8天】 socket模块包含了丰富的函数和方法,可以获取主机的ip地址,例如gethostbyname方法可以根据主机名获取ip地址,gethostbyname_ex方法可以获得本机所有ip地址列表,也可以使用netifaces模块获取网卡信息。
23 0