Python实现的栈、队列、文件目录遍历操作示例


Posted in Python onMay 06, 2019

本文实例讲述了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())

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
推荐下python/ironpython:从入门到精通
Oct 02 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
Mar 02 Python
JS设计模式之责任链模式实例详解
Feb 03 Python
python实现决策树、随机森林的简单原理
Mar 26 Python
pandas 数据归一化以及行删除例程的方法
Nov 10 Python
python将txt等文件中的数据读为numpy数组的方法
Dec 22 Python
Python图像处理之gif动态图的解析与合成操作详解
Dec 30 Python
Python代码实现删除一个list里面重复元素的方法
Apr 02 Python
Python使用dict.fromkeys()快速生成一个字典示例
Apr 24 Python
Python随机数函数代码实例解析
Feb 09 Python
如何使用Python自动生成报表并以邮件发送
Oct 15 Python
深入理解Python变量的数据类型和存储
Feb 01 Python
Python两台电脑实现TCP通信的方法示例
May 06 #Python
python3利用Socket实现通信的方法示例
May 06 #Python
75条笑死人的知乎神回复,用60行代码就爬完了
May 06 #Python
Python Flask 搭建微信小程序后台详解
May 06 #Python
Python玩转PDF的各种骚操作
May 06 #Python
使用Python和Prometheus跟踪天气的使用方法
May 06 #Python
Python中常用的8种字符串操作方法
May 06 #Python
You might like
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
PHP实现微信提现功能
2018/09/30 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
js实现网页抽奖实例
2015/08/05 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
AngularJS 支付倒计时功能实现思路
2017/06/05 Javascript
js实现京东轮播图效果
2017/06/30 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
vue中使用v-for时为什么不能用index作为key
2020/04/04 Javascript
js实现微信聊天界面
2020/08/09 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
python关键字and和or用法实例
2015/05/28 Python
Zabbix实现微信报警功能
2016/10/09 Python
Python中with及contextlib的用法详解
2017/06/08 Python
Python语言进阶知识点总结
2019/05/28 Python
使用pygame编写Flappy bird小游戏
2020/03/14 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
英国版MAC彩妆品牌:Illamasqua
2018/04/18 全球购物
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
SQL Server笔试题
2012/01/10 面试题
任课老师推荐信范文
2013/11/24 职场文书
2014党委书记四风对照检查材料思想汇报
2014/09/21 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
五年级上册复习计划
2015/01/19 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书
golang协程池模拟实现群发邮件功能
2021/05/02 Golang
MySQL中order by的执行过程
2022/06/05 MySQL