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中 ? : 三元表达式的使用介绍
Oct 09 Python
python中正则表达式的使用详解
Oct 17 Python
python查询mysql中文乱码问题
Nov 09 Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
Dec 14 Python
zookeeper python接口实例详解
Jan 18 Python
Python 中的Selenium异常处理实例代码
May 03 Python
利用Python实现手机短信监控通知的方法
Jul 22 Python
在Python中字符串、列表、元组、字典之间的相互转换
Nov 15 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
Jan 13 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
Apr 22 Python
keras做CNN的训练误差loss的下降操作
Jun 22 Python
Python合并pdf文件的工具
Jul 01 Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
PyQt5 QThread倒计时功能的实现代码
Apr 02 #Python
Python中Permission denied的解决方案
Apr 02 #Python
python爬不同图片分别保存在不同文件夹中的实现
Python读取文件夹下的所有文件实例代码
如何用python识别滑块验证码中的缺口
You might like
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
2011/12/05 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
yii数据库的查询方法
2015/12/28 PHP
PHP开发的微信现金红包功能示例
2017/06/29 PHP
深入浅析安装PhpStorm并激活的步骤详解
2020/09/17 PHP
extjs form textfield的隐藏方法
2008/12/29 Javascript
原生javascript获取元素样式属性值的方法
2010/12/25 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
2014/03/07 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
vue多种弹框的弹出形式的示例代码
2017/09/18 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
vue项目关闭eslint校验
2018/03/21 Javascript
vue keep-alive请求数据的方法示例
2018/05/16 Javascript
详解如何在微信小程序中愉快地使用sass
2018/07/30 Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
2019/04/10 Javascript
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
[52:09]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第二场
2014/05/26 DOTA
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
python 标准差计算的实现(std)
2019/07/29 Python
python装饰器原理与用法深入详解
2019/12/19 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
解决import tensorflow as tf 出错的原因
2020/04/16 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
selenium3.0+python之环境搭建的方法步骤
2021/02/01 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
美国背景检查、公共记录和人物搜索网站:BeenVerified
2018/02/25 全球购物
药剂专业学生求职信范文
2013/12/28 职场文书
《鱼游到了纸上》教学反思
2014/02/20 职场文书
小学老师寄语大全
2014/04/04 职场文书
公司文体活动总结
2015/05/07 职场文书
HttpClient实现表单提交上传文件
2022/08/14 Java/Android