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 相关文章推荐
10款最好的Web开发的 Python 框架
Mar 18 Python
python判断图片宽度和高度后删除图片的方法
May 22 Python
Python 2.x如何设置命令执行的超时时间实例
Oct 19 Python
python 美化输出信息的实例
Oct 15 Python
Python使用pydub库对mp3与wav格式进行互转的方法
Jan 10 Python
python列表插入append(), extend(), insert()用法详解
Sep 14 Python
使用Python刷淘宝喵币(低阶入门版)
Oct 30 Python
DJango的创建和使用详解(默认数据库sqlite3)
Nov 18 Python
python 通过视频url获取视频的宽高方式
Dec 10 Python
Django多进程滚动日志问题解决方案
Dec 17 Python
python二维图制作的实例代码
Dec 03 Python
Python Pandas pandas.read_sql_query函数实例用法分析
Jun 21 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
教你在header中隐藏php的版本信息
2016/08/10 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
javascript的对话框详解与参数
2007/03/08 Javascript
google 搜索框添加关键字实现代码
2010/04/24 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
javascript自然分类法算法实现代码
2013/10/11 Javascript
JS批量操作CSS属性详细解析
2013/12/16 Javascript
jQuery的context属性用法实例
2014/12/27 Javascript
javascript中的Base64、UTF8编码与解码详解
2015/03/18 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
微信小程序上传图片实例
2018/05/28 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
[01:11]辉夜杯战队访谈宣传片—CDEC.Y
2015/12/26 DOTA
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
python3中str(字符串)的使用教程
2017/03/23 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
Python数字图像处理之霍夫线变换实现详解
2018/01/12 Python
python:pandas合并csv文件的方法(图书数据集成)
2018/04/12 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
详解python中的Turtle函数库
2018/11/19 Python
python的内存管理和垃圾回收机制详解
2019/05/18 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
python 标准差计算的实现(std)
2019/07/29 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
Python Django搭建网站流程图解
2020/06/13 Python
如何使用PHP session
2015/04/21 面试题
科研课题实施方案
2014/03/18 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
2014年城管工作总结
2014/11/20 职场文书
朋友离别感言
2015/08/04 职场文书