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 相关文章推荐
简单介绍利用TK在Python下进行GUI编程的教程
Apr 13 Python
Django中的Signal代码详解
Feb 05 Python
Python中判断输入是否为数字的实现代码
May 26 Python
python 同时运行多个程序的实例
Jan 07 Python
Django中如何使用sass的方法步骤
Jul 09 Python
将python包发布到PyPI和制作whl文件方式
Dec 25 Python
Python应用实现双指数函数及拟合代码实例
Jun 19 Python
python利用递归方法实现求集合的幂集
Sep 07 Python
详解Anaconda 的安装教程
Sep 23 Python
Python批量删除mysql中千万级大量数据的脚本分享
Dec 03 Python
浅谈Python从全局与局部变量到装饰器的相关知识
Jun 21 Python
python工具dtreeviz决策树可视化和模型可解释性
Mar 03 Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
PyQt5 QThread倒计时功能的实现代码
Apr 02 #Python
Python中Permission denied的解决方案
Apr 02 #Python
python爬不同图片分别保存在不同文件夹中的实现
Python读取文件夹下的所有文件实例代码
如何用python识别滑块验证码中的缺口
You might like
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
使用php语句将数据库*.sql文件导入数据库
2014/05/05 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
2014/07/11 PHP
PHP封装的PDO数据库操作类实例
2017/06/21 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
去除链接虚线全面分析总结
2006/08/15 Javascript
Prototype1.5 rc2版指南最后一篇之Position
2007/01/10 Javascript
二行代码解决全部网页木马
2008/03/28 Javascript
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
2014/04/25 Javascript
JavaScript中的对象的extensible属性介绍
2014/12/30 Javascript
JavaScript事件学习小结(一)事件流
2016/06/09 Javascript
JS实现左边列表移到到右边列表功能
2018/03/28 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
Angular 多模块项目构建过程
2020/02/13 Javascript
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
Python实现二分查找算法实例
2015/05/26 Python
Python基础语法(Python基础知识点)
2016/02/28 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
python中scikit-learn机器代码实例
2018/08/05 Python
python3 logging日志封装实例
2020/04/08 Python
python3从网络摄像机解析mjpeg http流的示例
2020/11/13 Python
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
西雅图电动自行车公司:Rad Power Bikes
2020/02/02 全球购物
英国钻石公司:British Diamond Company
2020/02/16 全球购物
应用电子专业学生的自我评价
2013/10/16 职场文书
交通安全责任书范本
2014/07/24 职场文书
计算机专业自荐信
2015/03/05 职场文书
党支部培养考察意见
2015/06/02 职场文书
2019新员工心得体会
2019/06/25 职场文书
python 爬取豆瓣网页的示例
2021/04/13 Python
python 实现两个变量值进行交换的n种操作
2021/06/02 Python
Python selenium绕过webdriver监测执行javascript
2022/04/12 Python