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实现读取命令行参数的方法
May 22 Python
Python创建模块及模块导入的方法
May 27 Python
Python 中字符串拼接的多种方法
Jul 30 Python
Python 多个图同时在不同窗口显示的实现方法
Jul 07 Python
Python 操作 ElasticSearch的完整代码
Aug 04 Python
详解mac python+selenium+Chrome 简单案例
Nov 08 Python
Python While循环语句实例演示及原理解析
Jan 03 Python
aws 通过boto3 python脚本打pach的实现方法
May 10 Python
Scrapy 配置动态代理IP的实现
Sep 28 Python
python中slice参数过长的处理方法及实例
Dec 15 Python
Python 打印自己设计的字体的实例讲解
Jan 04 Python
详解Python函数print用法
Jun 18 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
mysql 的 like 问题,超强毕杀记!!!
2007/01/18 PHP
PHP基础学习之流程控制的实现分析
2013/04/28 PHP
PHP中使用addslashes函数转义的安全性原理分析
2014/11/03 PHP
PHP封装的非对称加密RSA算法示例
2018/05/28 PHP
Laravel5.4框架使用socialite实现github登录的方法
2019/03/20 PHP
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
JavaScript 监听textarea中按键事件
2009/10/08 Javascript
JavaScript 学习笔记(十二) dom
2010/01/21 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
2015/08/05 Javascript
基于JavaScript实现仿京东图片轮播效果
2015/11/06 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
详解搭建es6+devServer简单开发环境
2018/09/25 Javascript
vue 移动端适配方案详解
2018/11/15 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
Python 字典dict使用介绍
2014/11/30 Python
在Python中操作日期和时间之gmtime()方法的使用
2015/05/22 Python
Python中生成器和迭代器的区别详解
2018/02/10 Python
解决python3中解压zip文件是文件名乱码的问题
2018/03/22 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
python中自带的三个装饰器的实现
2019/11/08 Python
python连接mongodb数据库操作数据示例
2020/11/30 Python
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
乌克兰网上珠宝商店:GoldSoveren
2020/03/31 全球购物
怀念母亲教学反思
2014/04/28 职场文书
学雷锋演讲稿汇总
2014/05/10 职场文书
诚实守信演讲稿
2014/09/01 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
工程部经理岗位职责
2015/02/02 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python
Python制作一个随机抽奖小工具的实现
2021/07/07 Python
flex弹性布局详解
2022/03/20 HTML / CSS