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 相关文章推荐
pygame学习笔记(3):运动速率、时间、事件、文字
Apr 15 Python
Python对字符串实现去重操作的方法示例
Aug 11 Python
python跳过第一行快速读取文件内容的实例
Jul 12 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
Nov 07 Python
详解重置Django migration的常见方式
Feb 15 Python
python处理“
Jun 10 Python
Python pandas DataFrame操作的实现代码
Jun 21 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
Aug 27 Python
Window系统下Python如何安装OpenCV库
Mar 05 Python
Pytorch生成随机数Tensor的方法汇总
Sep 09 Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 Python
用Python爬取英雄联盟的皮肤详细示例
Dec 06 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
对squid中refresh_pattern的一些理解和建议
2009/04/17 PHP
php计算整个mysql数据库大小的方法
2015/06/19 PHP
php将数组存储为文本文件方法汇总
2015/10/28 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
2016/01/07 PHP
Yii2单元测试用法示例
2016/11/12 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
web性能优化之javascript性能调优
2012/12/28 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
JavaScript判断变量是否为数组的方法(Array)
2016/02/24 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
原生js实现回复评论功能
2017/01/18 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
2019/02/10 Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
2019/02/28 Javascript
JS异步处理的进化史深入讲解
2019/08/25 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
微信小程序入门之绘制时钟
2020/10/22 Javascript
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
2015/04/25 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
python 阶乘累加和的实例
2019/02/01 Python
浅谈Python编程中3个常用的数据结构和算法
2019/04/30 Python
python 三元运算符使用解析
2019/09/16 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
英国最大的独立家具零售商:Furniture Village
2016/09/06 全球购物
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
举例说明类变量和实例变量的区别
2016/06/30 面试题
护士的岗位职责
2013/12/04 职场文书
机械专业应届生求职信
2013/12/12 职场文书
总经理人事任命书
2014/06/05 职场文书
工作骂脏话检讨书
2014/10/05 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis