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 相关文章推荐
pycharm 使用心得(一)安装和首次使用
Jun 05 Python
Python编程中装饰器的使用示例解析
Jun 20 Python
python cx_Oracle模块的安装和使用详细介绍
Feb 13 Python
python urllib urlopen()对象方法/代理的补充说明
Jun 29 Python
python之mock模块基本使用方法详解
Jun 27 Python
Python (Win)readline和tab补全的安装方法
Aug 27 Python
在Pytorch中计算自己模型的FLOPs方式
Dec 30 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
Feb 28 Python
Pytorch对Himmelblau函数的优化详解
Feb 29 Python
python读取yaml文件后修改写入本地实例
Apr 27 Python
简单介绍Python的第三方库yaml
Jun 18 Python
Python实战实现爬取天气数据并完成可视化分析详解
Jun 16 Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
PyQt5 QThread倒计时功能的实现代码
Apr 02 #Python
Python中Permission denied的解决方案
Apr 02 #Python
python爬不同图片分别保存在不同文件夹中的实现
Python读取文件夹下的所有文件实例代码
如何用python识别滑块验证码中的缺口
You might like
php注销代码(session注销)
2012/05/31 PHP
PHP flush()与ob_flush()的区别详解
2013/06/03 PHP
php无限遍历目录示例
2014/02/21 PHP
php操作redis缓存方法分享
2015/06/03 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
2017/06/16 PHP
javascript学习笔记(十八) 获得页面中的元素代码
2012/06/20 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
js监听input输入框值的实时变化实例
2017/01/26 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
详解bootstrap导航栏.nav与.navbar区别
2017/11/23 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
详解VS Code使用之Vue工程配置format代码格式化
2019/03/20 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
Layui多选只有最后一个值的解决方法
2019/09/02 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
2019/12/16 Javascript
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
python处理csv中的空值方法
2018/06/22 Python
使用TensorFlow实现SVM
2018/09/06 Python
详解python函数的闭包问题(内部函数与外部函数详述)
2019/05/17 Python
ipython和python区别详解
2019/06/26 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
2013/01/09 HTML / CSS
共产党员岗位承诺书
2014/05/29 职场文书
社会发展项目建议书
2014/08/25 职场文书
2014年质量管理工作总结
2014/12/01 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
领导干部学习心得体会
2016/01/23 职场文书
如何用JavaScipt测网速
2021/05/09 Javascript
python 单机五子棋对战游戏
2022/04/28 Python