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 相关文章推荐
python定时检查某个进程是否已经关闭的方法
May 20 Python
Python正则表达式分组概念与用法详解
Jun 24 Python
解决matplotlib库show()方法不显示图片的问题
May 24 Python
Python实现简单的用户交互方法详解
Sep 25 Python
Django-Model数据库操作(增删改查、连表结构)详解
Jul 17 Python
python3.6 tkinter实现屏保小程序
Jul 30 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
Oct 04 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
Jan 18 Python
python生成大写32位uuid代码
Mar 03 Python
python两个list[]相加的实现方法
Sep 23 Python
Python和Bash结合在一起的方法
Nov 13 Python
python爬虫破解字体加密案例详解
Mar 02 Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
PyQt5 QThread倒计时功能的实现代码
Apr 02 #Python
Python中Permission denied的解决方案
Apr 02 #Python
python爬不同图片分别保存在不同文件夹中的实现
Python读取文件夹下的所有文件实例代码
如何用python识别滑块验证码中的缺口
You might like
无数据库的详细域名查询程序PHP版(3)
2006/10/09 PHP
用PHP书写安全的脚本代码
2012/02/05 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
PHP关键特性之命名空间实例详解
2017/05/06 PHP
js onclick事件传参讲解
2013/11/06 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
使用js如何实现全选与全不选
2013/12/30 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
2015/09/24 Javascript
JavaScript对象创建模式实例汇总
2016/10/03 Javascript
JS正则匹配中文的方法示例
2017/01/06 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
js实现扫雷小程序的示例代码
2017/09/27 Javascript
ajax请求+vue.js渲染+页面加载的示例
2018/02/11 Javascript
vue自定义指令directive的使用方法
2019/04/07 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
js闭包的9个使用场景
2020/12/29 Javascript
Python实现将xml导入至excel
2015/11/20 Python
Python实现包含min函数的栈
2016/04/29 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
复古斯堪的纳维亚儿童服装:Baby go Retro
2017/09/09 全球购物
Goodee官方商店:迷你投影仪
2021/03/15 全球购物
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
村捐赠仪式答谢词
2014/01/21 职场文书
八年级生物教学反思
2014/01/22 职场文书
网络技术专业求职信
2014/02/18 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
健康教育评估方案
2014/05/25 职场文书
办理房产过户的委托书
2014/09/14 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
学习党章的体会
2014/11/07 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
幼儿园六一儿童节开幕词
2016/03/04 职场文书