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的函数的一些高阶特性
Apr 27 Python
使用Python保存网页上的图片或者保存页面为截图
Mar 05 Python
Python编程中装饰器的使用示例解析
Jun 20 Python
Python+PIL实现支付宝AR红包
Feb 09 Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 Python
Python3.5实现的三级菜单功能示例
Mar 25 Python
python_mask_array的用法
Feb 18 Python
浅析Python 条件控制语句
Jul 15 Python
matplotlib 三维图表绘制方法简介
Sep 20 Python
python pyg2plot的原理知识点总结
Feb 28 Python
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
May 17 Python
Python中的turtle画箭头,矩形,五角星
Mar 16 Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
PyQt5 QThread倒计时功能的实现代码
Apr 02 #Python
Python中Permission denied的解决方案
Apr 02 #Python
python爬不同图片分别保存在不同文件夹中的实现
Python读取文件夹下的所有文件实例代码
如何用python识别滑块验证码中的缺口
You might like
PHP新手上路(五)
2006/10/09 PHP
用PHP实现 上一篇、下一篇的代码
2012/09/29 PHP
解析php获取字符串的编码格式的方法(函数)
2013/06/21 PHP
PHP动态规划解决0-1背包问题实例分析
2015/03/23 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
PHP+redis实现的购物车单例类示例
2019/02/02 PHP
php array_chunk()函数用法与注意事项
2019/07/12 PHP
基于jquery的一个拖拽到指定区域内的效果
2011/09/21 Javascript
jquery链式操作的正确使用方法
2014/01/06 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
javascript跨域总结之window.name实现的跨域数据传输
2015/11/01 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
vue使用技巧及vue项目中遇到的问题
2018/06/04 Javascript
js实现for循环跳过undefined值示例
2019/07/02 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
Nuxt的路由配置和参数传递方式
2020/11/06 Javascript
python实现在每个独立进程中运行一个函数的方法
2015/04/23 Python
Python使用redis pool的一种单例实现方式
2016/04/16 Python
Python冲顶大会 快来答题!
2018/01/17 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
django 实现celery动态设置周期任务执行时间
2019/11/19 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
提高python代码运行效率的一些建议
2020/09/29 Python
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
制药工程专业毕业生推荐信
2013/12/24 职场文书
好军嫂事迹材料
2014/01/15 职场文书
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
招标保密承诺书
2015/01/20 职场文书
教师节随笔
2015/08/15 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang