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 实现归并排序算法
Jun 05 Python
解析Python编程中的包结构
Oct 25 Python
python实现装饰器、描述符
Feb 28 Python
Windows系统下PhantomJS的安装和基本用法
Oct 21 Python
python模拟登陆,用session维持回话的实例
Dec 27 Python
python 中的paramiko模块简介及安装过程
Feb 29 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
Jul 31 Python
python 比较字典value的最大值的几种方法
Apr 17 Python
通过实例解析python and和or使用方法
Nov 14 Python
python selenium 获取接口数据的实现
Dec 07 Python
python opencv实现图像配准与比较
Feb 09 Python
Python os和os.path模块详情
Apr 02 Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
PyQt5 QThread倒计时功能的实现代码
Apr 02 #Python
Python中Permission denied的解决方案
Apr 02 #Python
python爬不同图片分别保存在不同文件夹中的实现
Python读取文件夹下的所有文件实例代码
如何用python识别滑块验证码中的缺口
You might like
xml+php动态载入与分页
2006/10/09 PHP
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
2013/10/26 PHP
ucenter通信原理分析
2015/01/09 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
2021/03/04 PHP
jQuery bind事件使用详解
2011/05/05 Javascript
浅谈Javascript面向对象编程
2011/11/15 Javascript
js常用代码段整理
2011/11/30 Javascript
js给页面加style无效果的解决方法
2014/01/20 Javascript
js根据日期判断星座的示例代码
2014/01/23 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
微信小程序 template模板详解及实例代码
2017/03/09 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
vue-vuex中使用commit提交mutation来修改state的方法详解
2018/09/16 Javascript
js自定义input文件上传样式
2018/10/26 Javascript
[02:20]DOTA2英雄基础教程 黑暗贤者
2013/12/19 DOTA
Python selenium 三种等待方式解读
2016/09/15 Python
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
手把手教你用python抢票回家过年(代码简单)
2018/01/21 Python
python2和python3的输入和输出区别介绍
2018/11/20 Python
Django中更改默认数据库为mysql的方法示例
2018/12/05 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
python通过实例讲解反射机制
2019/10/17 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
使用gunicorn部署django项目的问题
2020/12/30 Python
专注澳大利亚特产和新西兰特产的澳洲中文网:0061澳洲制造
2019/03/24 全球购物
C#怎么让一个窗口居中显示?
2015/10/20 面试题
C++程序员求职信
2014/05/07 职场文书
移交协议书
2014/08/19 职场文书
2015年公司新年寄语
2014/12/08 职场文书
社会实践心得体会范文
2016/01/14 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js