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中__name__的使用实例
Apr 14 Python
在Python中使用matplotlib模块绘制数据图的示例
May 04 Python
Python脚本暴力破解栅栏密码
Oct 19 Python
Python内建模块struct实例详解
Feb 02 Python
Django如何自定义分页
Sep 25 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
Dec 12 Python
使用python将多个excel文件合并到同一个文件的方法
Jul 09 Python
python批量处理文件或文件夹
Jul 28 Python
python多线程实现TCP服务端
Sep 03 Python
PyTorch中topk函数的用法详解
Jan 02 Python
Python select及selectors模块概念用法详解
Jun 22 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
Feb 22 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
phpmyadmin里面导入sql语句格式的大量数据的方法
2010/06/05 PHP
php header示例代码(推荐)
2010/09/08 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
php版交通银行网银支付接口开发入门教程
2016/09/26 PHP
五段实用的js高级技巧
2011/12/20 Javascript
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
2012/01/20 Javascript
JS事件在IE与FF中的区别详细解析
2013/11/20 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
2015/10/23 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
Jquery on绑定的事件 触发多次实例代码
2016/12/08 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
基于JavaScript实现的折半查找算法示例
2017/04/14 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
Vue中封装input组件的实例详解
2017/10/17 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
vue 开发一个按钮组件的示例代码
2018/03/27 Javascript
基于nodejs的微信JS-SDK简单应用实现
2019/05/21 NodeJs
React+TypeScript+webpack4多入口配置详解
2019/08/08 Javascript
JS可断点续传文件上传实现代码解析
2020/07/30 Javascript
[04:29]2014DOTA2国际邀请赛 主赛事第三日TOPPLAY
2014/07/21 DOTA
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
Python算法应用实战之队列详解
2017/02/04 Python
Django REST framework视图的用法
2019/01/16 Python
详解Python3定时器任务代码
2019/09/23 Python
Python小整数对象池和字符串intern实例解析
2020/03/21 Python
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
ECCO爱步官方旗舰店:丹麦鞋履品牌
2018/01/02 全球购物
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
法国体育用品商店:GO Sport
2019/10/23 全球购物
澳大利亚领先的内衣店:Bendon Lingerie澳大利亚
2020/05/15 全球购物
优秀毕业生主要事迹材料
2015/11/04 职场文书
2016班级元旦联欢会开幕词
2016/03/04 职场文书
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers