python 遍历磁盘目录的三种方法


Posted in Python onApril 02, 2021

深度遍历

递归

import os

def get_files(path):
  # 判断路径是否存在,如果不存在,函数直接结束
  if not os.path.exists(path):
    print('路径不存在')
    return
  # 判断路径是否为文件夹
  if not os.path.isdir(path):
    print('路径是一个文件')
    return
  # 这时候,路径是一个文件夹
  # 获取文件夹中文件或文件夹的名称
  file_list = os.listdir(path)
  # 遍历文件夹
  for filename in file_list:
    # 拼接路径,获取每个次级目录下的文件路径
    subpath = os.path.join(path,filename)
    if os.path.isfile(subpath):
      if os.path.splitext(subpath)[1] == '.py':
        print('python文件:{}'.format(subpath))
    else:
      # 如果filename是文件夹,则调用函数继续遍历
      get_files(subpath)

用栈来遍历磁盘

栈的特点:先进后厨,后进先出
原理:path第一次被pop删除后返回path,遍历目录下的文件,如果遇到文件夹追加到列表中,pop是删除最后一位的元素,每次又遍历最后一位的文件夹,所以每一轮都会将次级目录下的文件夹遍历完成之后再遍历下个次级目录

import os

def get_files(path):
  # 判断路径是否存在
  if not os.path.exists(path):
    print('路径不存在')
    return
  if not os.path.isdir(path):
    print('路径是一个文件夹')
    return
  # 创建一个列表作为栈
  stack = [path]
  # 取出栈中的元素
  while len(stack) != 0:
    path = stack.pop()
    file_list = os.listdir(path)
    for filename in file_list:
      subpath = os.path.join(path,filename)
      if os.path.isfile(subpath):
        print('python文件:{}'.format(subpath))
      else:
        stack.append(subpath)

广度遍历磁盘

用队列遍历磁盘

import os
import collections


def get_py_file(path):
  # 判断路径是否存在
  if not os.path.exists(path):
    print('路径不存在')
    return
    # 判断路径是否是文件夹
  if os.path.isfile(path):
    print('路径是文件')
    return
    # path是一个文件夹

  # 定义一个空对列
  queue = collections.deque()
  queue.append(path)
  while len(queue) != 0:
    # 从队列中获取第一个元素
    path = queue.popleft()
    # 获取目录下的所有内容
    filelist = os.listdir(path)
    # 遍历
    for filename in filelist:
      # 拼接
      filepath = os.path.join(path, filename)
      if os.path.isfile(filepath):
        if os.path.splitext(filepath)[1] == '.py':
          print(filepath)
      else:
        queue.append(filepath)

以上就是python 遍历磁盘目录的三种方法的详细内容,更多关于python 遍历磁盘目录的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
动态创建类实例代码
Oct 07 Python
python使用paramiko模块实现ssh远程登陆上传文件并执行
Jan 27 Python
python基础教程之udp端口扫描
Feb 10 Python
Django框架下在视图中使用模版的方法
Jul 16 Python
Python中 传递值 和 传递引用 的区别解析
Feb 22 Python
TensorFlow模型保存和提取的方法
Mar 08 Python
在Python 不同级目录之间模块的调用方法
Jan 19 Python
python从子线程中获得返回值的方法
Jan 30 Python
500行Python代码打造刷脸考勤系统
Jun 03 Python
浅析关于Keras的安装(pycharm)和初步理解
Oct 23 Python
jupyter notebook更换皮肤主题的实现
Jan 07 Python
关于python类SortedList详解
Sep 04 Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
PyQt5 QThread倒计时功能的实现代码
Apr 02 #Python
Python中Permission denied的解决方案
Apr 02 #Python
python爬不同图片分别保存在不同文件夹中的实现
Python读取文件夹下的所有文件实例代码
如何用python识别滑块验证码中的缺口
You might like
php 获取可变函数参数的函数
2009/08/26 PHP
yii2 页面底部加载css和js的技巧
2016/04/21 PHP
php-msf源码详解
2017/12/25 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
JS中typeof与instanceof之间的区别总结
2013/11/14 Javascript
JavaScript实现Java中StringBuffer的方法
2015/02/09 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
2015/03/14 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
在小程序中推送模板消息的实现方法
2019/07/22 Javascript
Vue中多元素过渡特效的解决方案
2020/02/05 Javascript
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
Python求两个list的差集、交集与并集的方法
2014/11/01 Python
Python中exit、return、sys.exit()等使用实例和区别
2015/05/28 Python
Python 中的 global 标识对变量作用域的影响
2019/08/12 Python
一行Python代码过滤标点符号等特殊字符
2019/08/12 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
PIP和conda 更换国内安装源的方法步骤
2020/09/21 Python
python 实时调取摄像头的示例代码
2020/11/25 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
canvas裁剪clip()函数的具体使用
2018/03/01 HTML / CSS
美国领先的机场停车聚合商:Airport Parking Reservations
2020/02/28 全球购物
法国隐形眼镜网站:VisionDirect.fr
2020/03/03 全球购物
副乡长民主生活会个人对照检查材料思想汇报
2014/10/01 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python