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如何查看系统网络流量的信息
Sep 12 Python
windows下安装Python和pip终极图文教程
Mar 05 Python
Python中你应该知道的一些内置函数
Mar 31 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
Feb 13 Python
Python3内置模块pprint让打印比print更美观详解
Jun 02 Python
你可能不知道的Python 技巧小结
Jan 29 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
Feb 26 Python
django实现将修改好的新模型写入数据库
Mar 31 Python
python如何调用java类
Jul 05 Python
matplotlib基础绘图命令之bar的使用方法
Aug 13 Python
python 基于opencv实现图像增强
Dec 23 Python
Python实现随机生成迷宫并自动寻路
Jun 13 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
php allow_url_include的应用和解释
2010/04/22 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
php中ob_flush函数和flush函数用法分析
2015/03/18 PHP
php+redis实现多台服务器内网存储session并读取示例
2017/01/12 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
JS动画效果代码3
2008/04/03 Javascript
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
Knockoutjs 学习系列(一)ko初体验
2016/06/07 Javascript
js 创建对象 经典模式全面了解
2016/08/16 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
jQuery实现表格元素动态创建功能
2017/01/09 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
浅谈Vue.js 1.x 和 2.x 实例的生命周期
2017/07/25 Javascript
用js实现before和after伪类的样式修改的示例代码
2017/09/07 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
2019/09/25 Javascript
微信小程序实现禁止分享代码实例
2019/10/19 Javascript
vue3.0生命周期的示例代码
2020/09/24 Javascript
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
Python 类属性与实例属性,类对象与实例对象用法分析
2019/09/20 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
教师自荐信
2013/12/10 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
2015年中学校长工作总结
2015/05/19 职场文书
创业计划书详解
2019/07/19 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js
MySQL三种方式实现递归查询
2022/04/18 MySQL