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实现子类调用父类的方法
Nov 10 Python
Python MySQLdb模块连接操作mysql数据库实例
Apr 08 Python
python分析作业提交情况
Nov 22 Python
Python实现对文件进行单词划分并去重排序操作示例
Jul 10 Python
使用python验证代理ip是否可用的实现方法
Jul 25 Python
pygame游戏之旅 调用按钮实现游戏开始功能
Nov 21 Python
windows下 兼容Python2和Python3的解决方法
Dec 05 Python
了解不常见但是实用的Python技巧
May 23 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
Aug 23 Python
Python socket聊天脚本代码实例
Jan 02 Python
pycharm激活码有效到2020年11月底
Sep 18 Python
解决Pycharm 导入其他文件夹源码的2种方法
Feb 12 Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
PyQt5 QThread倒计时功能的实现代码
Apr 02 #Python
Python中Permission denied的解决方案
Apr 02 #Python
python爬不同图片分别保存在不同文件夹中的实现
Python读取文件夹下的所有文件实例代码
如何用python识别滑块验证码中的缺口
You might like
3
2006/10/09 PHP
用PHP生成静态HTML速度快类库
2007/03/18 PHP
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
读jQuery之十 事件模块概述
2011/06/27 Javascript
有关JavaScript的10个怪癖和秘密分享
2011/08/28 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
IE6兼容透明背景图片及解决方案
2015/08/19 Javascript
详解js私有作用域中创建特权方法
2016/01/25 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
JavaScript中捕获与冒泡详解及实例
2017/02/03 Javascript
socket.io学习教程之深入学习篇(三)
2017/04/29 Javascript
vue loadmore 组件滑动加载更多源码解析
2017/07/19 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
2020/08/06 Javascript
Python中str.format()详解
2017/03/12 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
2020/09/22 Python
Python中join()函数多种操作代码实例
2020/01/13 Python
Python实现桌面翻译工具【新手必学】
2020/02/12 Python
python如何判断IP地址合法性
2020/04/05 Python
python如何获得list或numpy数组中最大元素对应的索引
2020/11/16 Python
Python+unittest+requests+excel实现接口自动化测试框架
2020/12/23 Python
TensorFlow2.0使用keras训练模型的实现
2021/02/20 Python
英国婚礼商城:Wedding Mall
2019/11/02 全球购物
添柏岚英国官方网站:Timberland英国
2019/11/28 全球购物
Solaris操作系统的线程机制
2012/12/23 面试题
八一演出活动方案
2014/02/03 职场文书
小学优秀班集体申报材料
2014/05/25 职场文书
教师考核评语大全
2014/12/31 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
呼啸山庄读书笔记
2015/06/29 职场文书
教师节大会主持词
2015/07/06 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
Python学习开发之图形用户界面详解
2021/08/23 Python