python栈、队列、文件目录遍历
一、 栈与队列
关注公众号“轻松学编程”了解更多。
1、 栈 stack
特点:先进先出[可以抽象成竹筒中的豆子,先进去的后出来] 后来者居上
mystack = []
#压栈[向栈中存数据]
mystack.append(1)
print(mystack)
mystack.append(2)
print(mystack)
mystack.append(3)
print(mystack)
#出栈[从栈中取数据]
mystack.pop()
print(mystack)
mystack.pop()
print(mystack)
2、 队列 queue
特点: 先进先出[可以抽象成一个平放的水管]
#导入数据结构的集合
import collections
queue = collections.deque([1, 2, 3, 4, 5])
print(queue)
#入队[存数据]
queue.append(8)
print(queue)
queue.append(9)
print(queue)
#取数据
print(queue.popleft())
print(queue)
二、 目录遍历
1、 递归遍历目录
import os
def diguigetAllDir(path,suojin):
    # 如果文件夹中只有文件则返回
    if os.path.isfile(path):
        return
    # 如果为空文件夹则返回
    list1 = os.listdir(path)
    if len(list1) == 0:
        return
    # 遍历list1列表
    for item in list1:
        print(' '*suojin,'%s'%item)
        path1 = os.path.join(path,item)
        if os.path.isdir(path1):
            diguigetAllDir(path1, suojin + 4)
# 遍历当前目录
diguigetAllDir(os.getcwd(),0)
2、 栈模拟递归遍历目录
也称为深度遍历
import os
def stackGetAllDir(path):
    if not os.listdir(path):
        return
    liststack = [path]
    listsuojin = [0]
    print(liststack)
    while len(liststack) != 0:
        path = liststack.pop()  #路径出栈
        suojin = listsuojin.pop()   #缩进空格个数出栈
        print(' ' * suojin, os.path.basename(path))
        if os.path.isdir(path):
            for i in os.listdir(path):  #遍历路径下的全部文件
                listsuojin.append(suojin +4)
                liststack.append(os.path.join(path,i))  #文件名拼接成相对路径后入栈
# 遍历当前目录
stackGetAllDir(os.getcwd())
3、 队列模拟递归遍历目录
也被称为广度遍历
import os
import collections
def queueGetAllDir(path=" "):
    if not os.listdir(path):
        return
    queue = collections.deque()
    queue.append(path)
    while len(queue) != 0:
        filePath = queue.popleft()
        fileList = os.listdir(filePath) #遍历filePath路径下的目录
        for filename in fileList:
            absFilePath = os.path.join(filePath,filename) #路径拼接
            if os.path.isdir(absFilePath):
                print("目录:",filename)
                queue.append(absFilePath)
            else:
                print("文件:",filename)
# 遍历当前目录
queueGetAllDir(os.getcwd())
后记
【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。
也可加我微信【1257309054】,拉你进群,大家一起交流学习。
 如果文章对您有帮助,请我喝杯咖啡吧!
公众号


关注我,我们一起成长~~
python栈、队列、文件目录遍历的更多相关文章
- python 文件目录遍历
		递归遍历目录和文件 import os path = r'F:\PycharmProjects\basic gram\作业和习题\test' def getAllFileAndDir(path): # ... 
- python数据结构-数组/列表/栈/队列及实现
		首先 我们要分清楚一些概念和他们之间的关系 数组(array) 表(list) 链表(linked list) 数组链表(array list) 队列(queue) 栈(stack) li ... 
- java 集合 Connection 栈 队列 及一些常用
		集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ... 
- Java 容器之 Connection栈队列及一些常用
		集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ... 
- java面向对象的栈 队列 优先级队列的比较
		栈 队列 有序队列数据结构的生命周期比那些数据库类型的结构(比如链表,树)要短得多.在程序操作执行期间他们才被创建,通常用他们去执行某项特殊的任务:当完成任务之后,他们就会被销毁.这三个数据结构还有一 ... 
- python OS 模块 文件目录操作
		Python OS 模块 文件目录操作 os模块中包含了一系列文件操作的函数,这里介绍的是一些在Linux平台上应用的文件操作函数.由于Linux是C写的,低层的libc库和系统调用的接口都是C AP ... 
- Python 栈(stack)
		Python 栈(stack) 栈(stack)又名堆栈,它是一种运算受限的线性表 栈只能在一端进行插入和删除操作,它按照先进后出(FILO)的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶 ... 
- 使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解(新手必学)
		为大家介绍下Python爬虫库BeautifulSoup遍历文档树并对标签进行操作的详细方法与函数下面就是使用Python爬虫库BeautifulSoup对文档树进行遍历并对标签进行操作的实例,都是最 ... 
- 分布式机器学习:如何快速从Python栈过渡到Scala栈
		首先介绍下我的情况和需求,如果你跟我类似,那么这篇文章将很有帮助: 我之前的技术栈主要是Java.Python,机器学习方面主要用到是pandas.numpy.sklearn.scipy.matplo ... 
随机推荐
- Python练习题 043:Project Euler 015:方格路径
			本题来自 Project Euler 第15题:https://projecteuler.net/problem=15 ''' Project Euler: Problem 15: Lattice p ... 
- Python练习题 033:Project Euler 005:最小公倍数
			本题来自 Project Euler 第5题:https://projecteuler.net/problem=5 # Project Euler: Problem 5: Smallest multi ... 
- Linux知识点笔记
			Linux启动脚本 rcS文件,rcS文件位于系统根目录下的"/etc/init.d"下. rcS文件本质是一个bash shell脚本,因此遵循bash脚本的语法规则. [1] ... 
- 【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫
			实时监控股市重大公告的Python爬虫小技巧 精力有限的我们,如何更加有效率地监控信息? 很多时候特别是交易时,我们需要想办法监控一些信息,比如股市的公告.如果现有的软件没有办法实现我们的需求,那么就 ... 
- 00 在Windows环境中开发Cordova项目的准备工作
			1.开发环境准备: 安装nodejs 安装Cordova 安装Visual Studio Code 安装nodejs步骤: 通过nodejs官网(https:/ ... 
- 03 sublime text3下配置Java的编译运行环境
			参考如下文章,加入了自己的干货: https://blog.csdn.net/qq_38295511/article/details/81140069 https://blog.csdn.net/qq ... 
- 【题解】[ZJOI2009]狼和羊的故事
			题目戳我 \(\text{Solution:}\) 显然思路,把所有羊看成一个源点,所有狼看成一个汇点,格子之间连容量为\(1\)的边,直接跑最小割. 技巧: 注意到篱笆不能把羊给割掉,狼同理.所以, ... 
- 【题解】[AHOI2013]作业
			Link 题目大意:\(n\)个数,\(m\)个询问,每次四个参数,\(l,r,a,b\),问区间\([l,r]\)中出现过的,数值在\([a,b]\)区间中的数的个数以及区间\([l,r]\)中数值 ... 
- MySql查询语句中的变量使用
			前言 今日在LeetCode刷MySql的题,遇到一题,题目到没什么,解答完了之后习惯去看此题的题解,有位大佬的思路让博主感觉很惊艳,至此,特地记录学习一下. 题目 解答 乍一看题目也没啥,分数排名, ... 
- ubuntu20 使用命令安装 rabbitmq
			安装 rabbitmq sudo apt-get install erlang-nox -y sudo apt-get update sudo apt-get install rabbitmq-ser ... 
