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绘图库Matplotlib的安装
Jul 03 Python
Python中的自定义函数学习笔记
Sep 23 Python
python实现应用程序在右键菜单中添加打开方式功能
Jan 09 Python
Python实现注册登录系统
Aug 08 Python
PYTHON基础-时间日期处理小结
May 05 Python
浅谈Series和DataFrame中的sort_index方法
Jun 07 Python
对Python 3.2 迭代器的next函数实例讲解
Oct 18 Python
通过pycharm使用git的步骤(图文详解)
Jun 13 Python
Python简单处理坐标排序问题示例
Jul 11 Python
详解Pandas 处理缺失值指令大全
Jul 30 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
Oct 15 Python
python本地文件服务器实例教程
May 02 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
Symfony实现行为和模板中取得request参数的方法
2016/03/17 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
jquery 表格分页等操作实现代码(pagedown,pageup)
2010/04/11 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
超级有用的13个基于jQuery的内容滚动插件和教程
2011/07/31 Javascript
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
JS验证邮箱格式是否正确的代码
2013/12/05 Javascript
jQuery 中DOM 操作详解
2015/01/13 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
使用Karma做vue组件单元测试的实现
2020/01/16 Javascript
jquery实现垂直手风琴菜单
2020/03/04 jQuery
浅谈在vue-cli3项目中解决动态引入图片img404的问题
2020/08/04 Javascript
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
在Python中进行自动化单元测试的教程
2015/04/15 Python
在Python下进行UDP网络编程的教程
2015/04/29 Python
详解Python中time()方法的使用的教程
2015/05/22 Python
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
Window环境下Scrapy开发环境搭建
2018/11/18 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
HTML5 device access 设备访问详解
2018/05/24 HTML / CSS
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
如何用JQuery进行表单验证
2013/05/29 面试题
“四风”问题整改措施和努力方向
2014/09/20 职场文书
四风专项整治工作情况汇报
2014/10/28 职场文书
史上最全书信经典范文大全(建议收藏)
2019/07/10 职场文书
Pycharm远程调试和MySQL数据库授权问题
2022/03/18 MySQL