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测试驱动开发实例
Oct 08 Python
Python psutil模块简单使用实例
Apr 28 Python
分享给Python新手们的几道简单练习题
Sep 21 Python
Python基于Tkinter模块实现的弹球小游戏
Dec 27 Python
对python判断ip是否可达的实例详解
Jan 31 Python
Python任意字符串转16, 32, 64进制的方法
Jun 12 Python
基于Django静态资源部署404的解决方法
Jul 28 Python
Python中filter与lambda的结合使用详解
Dec 24 Python
Pytorch之parameters的使用
Dec 31 Python
python实现吃苹果小游戏
Mar 21 Python
Python字符串查找基本操作代码案例
Oct 27 Python
python的变量和简单数字类型详解
Sep 15 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
Protoss兵种对照表
2020/03/14 星际争霸
德生H-501的评价与改造
2021/03/02 无线电
PHP与MySQL开发中页面乱码的产生与解决
2008/03/27 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
学习php设计模式 php实现抽象工厂模式
2015/12/07 PHP
php使用include 和require引入文件的区别
2017/02/16 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
javascript如何使用bind指定接收者
2014/05/04 Javascript
js星星评分效果
2014/07/24 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
2016/01/26 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
JS碰撞运动实现方法详解
2016/12/15 Javascript
win系统下nodejs环境安装配置
2017/05/04 NodeJs
微信小程序实现图片上传、删除和预览功能的方法
2017/12/18 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
Vue.js中Line第三方登录api的实现代码
2020/06/29 Javascript
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
[01:06:19]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第二场 1月8日
2021/03/11 DOTA
Python中条件选择和循环语句使用方法介绍
2013/03/13 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
Yahoo的PHP面试题
2014/05/26 面试题
得到Class的三个过程是什么
2012/08/10 面试题
网上快餐厅创业计划书
2014/02/01 职场文书
2014年党员公开承诺书范文
2014/03/28 职场文书
安全生产管理责任书
2014/04/16 职场文书
新文化运动的口号
2014/06/21 职场文书
人力资源管理专业自荐信
2014/06/24 职场文书
优秀党员学习焦裕禄精神思想汇报范文
2014/09/10 职场文书
毕业论文致谢格式模板
2015/05/14 职场文书
中学校园广播稿
2015/08/18 职场文书
谢师宴学生答谢词
2015/09/30 职场文书
深入浅析python3 依赖倒置原则(示例代码)
2021/07/09 Python
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js
Python何绘制带有背景色块的折线图
2022/04/23 Python