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开发常用的一些开源Package分享
Feb 14 Python
C#返回当前系统所有可用驱动器符号的方法
Apr 18 Python
Python实现JSON反序列化类对象的示例
Jan 31 Python
Python通过调用mysql存储过程实现更新数据功能示例
Apr 03 Python
python的格式化输出(format,%)实例详解
Jun 01 Python
Python中使用logging和traceback模块记录日志和跟踪异常
Apr 09 Python
Python常用模块之requests模块用法分析
May 15 Python
Pytorch实现LSTM和GRU示例
Jan 14 Python
Python之关于类变量的两种赋值区别详解
Mar 12 Python
Python新手学习函数默认参数设置
Jun 03 Python
Python 程序员必须掌握的日志记录
Aug 17 Python
基于Python的图像阈值化分割(迭代法)
Nov 20 Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
PyQt5 QThread倒计时功能的实现代码
Apr 02 #Python
Python中Permission denied的解决方案
Apr 02 #Python
python爬不同图片分别保存在不同文件夹中的实现
Python读取文件夹下的所有文件实例代码
如何用python识别滑块验证码中的缺口
You might like
两个强悍的php 图像处理类1
2009/06/15 PHP
php获得url参数中具有&的值的方法
2014/03/05 PHP
Laravel中Trait的用法实例详解
2016/03/16 PHP
php链式操作的实现方式分析
2019/08/12 PHP
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
jQuery 写的简单打字游戏可以提示正确和错误的次数
2014/07/01 Javascript
jquery实现网页的页面平滑滚动效果代码
2015/11/02 Javascript
js识别uc浏览器的代码
2015/11/06 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
vue操作动画的记录animate.css实例代码
2019/04/26 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
2019/04/28 Javascript
微信小程序云开发如何使用npm安装依赖
2019/05/18 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
python ElementTree 基本读操作示例
2009/04/09 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
用Python读取几十万行文本数据
2018/12/24 Python
django实现支付宝支付实例讲解
2019/10/17 Python
Python @property装饰器原理解析
2020/01/22 Python
python计算Content-MD5并获取文件的Content-MD5值方式
2020/04/03 Python
Python Sqlalchemy如何实现select for update
2020/10/12 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
html5移动端价格输入键盘的实现
2019/09/16 HTML / CSS
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
.NET面试题:什么是反射
2016/09/30 面试题
调解员先进事迹材料
2014/02/07 职场文书
新年晚会主持词
2014/03/24 职场文书
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
Python如何利用正则表达式爬取网页信息及图片
2021/04/17 Python
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle
Python first-order-model实现让照片动起来
2022/06/25 Python