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的Tornado框架实现一个一对一聊天的程序
Apr 25 Python
Python使用Redis实现作业调度系统(超简单)
Mar 22 Python
python2.7安装图文教程
Mar 13 Python
Python 带有参数的装饰器实例代码详解
Dec 06 Python
Python定时任务工具之APScheduler使用方式
Jul 24 Python
Python中IP地址处理IPy模块的方法
Aug 16 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
Feb 05 Python
在pycharm中实现删除bookmark
Feb 14 Python
使用PyCharm安装pytest及requests的问题
Jul 31 Python
用python 绘制茎叶图和复合饼图
Feb 26 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
Jun 23 Python
什么是Python装饰器?如何定义和使用?
Apr 11 Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
PyQt5 QThread倒计时功能的实现代码
Apr 02 #Python
Python中Permission denied的解决方案
Apr 02 #Python
python爬不同图片分别保存在不同文件夹中的实现
Python读取文件夹下的所有文件实例代码
如何用python识别滑块验证码中的缺口
You might like
php简单封装了一些常用JS操作
2007/02/25 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
2013/06/27 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
Yii rules常用规则示例
2016/03/15 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
PHP 实现链式操作
2021/03/09 PHP
Prototype String对象 学习
2009/07/19 Javascript
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
在网页中使用document.write时遭遇的奇怪问题
2010/08/24 Javascript
javascript中cookie对象用法实例分析
2015/01/30 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
2016/06/17 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
vue resource post请求时遇到的坑
2017/10/19 Javascript
js for终止循环 跳出多层循环
2018/10/04 Javascript
vue中的mescroll搜索运用及各种填坑处理
2019/10/30 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
Js利用正则表达式去除字符串的中括号
2020/11/23 Javascript
[31:00]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS iG
2014/05/25 DOTA
Python实现批量将word转html并将html内容发布至网站的方法
2015/07/14 Python
Python中字典和集合学习小结
2017/07/07 Python
使用sklearn的cross_val_score进行交叉验证实例
2020/02/28 Python
Python中求对数方法总结
2020/03/10 Python
使用canvas压缩图片大小的方法示例
2019/08/02 HTML / CSS
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
2020/08/20 HTML / CSS
Canvas在超级玛丽游戏中的应用详解
2021/02/06 HTML / CSS
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
生产现场工艺工程师岗位职责
2013/11/28 职场文书
医师定期考核实施方案
2014/05/07 职场文书
超市创意活动方案
2014/08/15 职场文书
销售会议开幕词
2016/03/04 职场文书
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python