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中管道用法入门实例
Jun 04 Python
在Lighttpd服务器中运行Django应用的方法
Jul 22 Python
Python利用Beautiful Soup模块搜索内容详解
Mar 29 Python
Python 对输入的数字进行排序的方法
Jun 23 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
Jul 31 Python
Python3分析处理声音数据的例子
Aug 27 Python
Python 共享变量加锁、释放详解
Aug 28 Python
python之yield和Generator深入解析
Sep 18 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
Jan 13 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
Mar 06 Python
多个版本的python共存时使用pip的正确做法
Oct 26 Python
用python发送微信消息
Dec 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
十大“创意”战术!
2020/03/04 星际争霸
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
2011/11/10 PHP
PHPStrom中实用的功能和快捷键大全
2015/09/23 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
Javascript 写的简单进度条控件
2008/01/22 Javascript
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
jQuery 版元素拖拽原型代码
2011/04/25 Javascript
js+xml生成级联下拉框代码
2012/07/24 Javascript
Javascript的严格模式strict mode详细介绍
2014/06/06 Javascript
javascript几个易错点记录
2014/11/26 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
jQuery EasyUI 入门必看
2016/06/03 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
JS实现留言板功能
2017/06/17 Javascript
vue自定义全局组件(自定义插件)的用法
2018/01/30 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
Js on及addEventListener原理用法区别解析
2020/07/11 Javascript
python快速排序代码实例
2013/11/21 Python
python实现基于两张图片生成圆角图标效果的方法
2015/03/26 Python
Python中threading模块join函数用法实例分析
2015/06/04 Python
python模拟事件触发机制详解
2018/01/19 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
python numpy实现rolling滚动案例
2020/06/08 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
波兰运动鞋网上商店:Distance.pl
2020/07/30 全球购物
linux面试题参考答案(9)
2015/01/07 面试题
广告学专业推荐信范文
2013/11/23 职场文书
个人授权委托书模板
2014/09/14 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
2015元旦节寄语
2014/12/08 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
MySQL查询学习之基础查询操作
2021/05/08 MySQL