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 Django(图文)
Nov 04 Python
Python 对象中的数据类型
May 13 Python
使用python实现个性化词云的方法
Jun 16 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
Feb 07 Python
Python交互环境下实现输入代码
Jun 22 Python
Flask框架WTForm表单用法示例
Jul 20 Python
Django框架下静态模板的继承操作示例
Nov 08 Python
python 微信好友特征数据分析及可视化
Jan 07 Python
基于python监控程序是否关闭
Jan 14 Python
python同义词替换的实现(jieba分词)
Jan 21 Python
基于jupyter代码无法在pycharm中运行的解决方法
Apr 21 Python
Python WebSocket长连接心跳与短连接的示例
Nov 24 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中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
PHP实现登录验证码校验功能
2018/05/17 PHP
PHP之header函数详解
2021/03/02 PHP
javascript 对象比较实现代码
2009/04/27 Javascript
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
node.js中的fs.lstatSync方法使用说明
2014/12/16 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
让你一句话理解闭包(简单易懂)
2016/06/03 Javascript
详解基于Node.js的HTTP/2 Server实践
2018/05/31 Javascript
Vue路由对象属性 .meta $route.matched详解
2019/11/04 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
Vue 中获取当前时间并实时刷新的实现代码
2020/05/12 Javascript
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
使用wxpython实现的一个简单图片浏览器实例
2014/07/10 Python
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
python对指定目录下文件进行批量重命名的方法
2015/04/18 Python
python访问系统环境变量的方法
2015/04/29 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
python之yield和Generator深入解析
2019/09/18 Python
Python 存取npy格式数据实例
2020/07/01 Python
浅谈Python __init__.py的作用
2020/10/28 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
html5实现canvas阴影效果示例
2014/05/07 HTML / CSS
党支部书记先进事迹
2014/01/17 职场文书
亮剑精神演讲稿
2014/05/23 职场文书
幼儿园健康教育方案
2014/06/14 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
国庆节活动总结
2014/08/26 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
委托函范文
2015/01/29 职场文书
药店营业员岗位职责
2015/04/14 职场文书
Python内置包对JSON文件数据进行编码和解码
2022/04/12 Python
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js