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中文问题解决方法(总结了多位前人经验,初学者必看)
Mar 13 Python
浅谈Python中的闭包
Jul 08 Python
详解Python编程中基本的数学计算使用
Feb 04 Python
python3使用SMTP发送HTML格式邮件
Jun 19 Python
Python中的pathlib.Path为什么不继承str详解
Jun 23 Python
Python for循环及基础用法详解
Nov 08 Python
使用matlab 判断两个矩阵是否相等的实例
May 11 Python
Pyinstaller 打包发布经验总结
Jun 02 Python
Python基于httpx模块实现发送请求
Jul 07 Python
python speech模块的使用方法
Sep 09 Python
Django-Scrapy生成后端json接口的方法示例
Oct 06 Python
利用Python实现翻译HTML中的文本字符串
Jun 21 Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
PyQt5 QThread倒计时功能的实现代码
Apr 02 #Python
Python中Permission denied的解决方案
Apr 02 #Python
python爬不同图片分别保存在不同文件夹中的实现
Python读取文件夹下的所有文件实例代码
如何用python识别滑块验证码中的缺口
You might like
PHP的FTP学习(三)
2006/10/09 PHP
用php制作简单分页(从数据库读取记录)的方法详解
2013/05/04 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
laravel中的一些简单实用功能
2018/11/03 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
2019/08/12 PHP
PHP 实现缩略图
2021/03/09 PHP
如何在一个页面显示多个百度地图
2013/04/07 Javascript
Jquery插件分享之气泡形提示控件grumble.js
2014/05/20 Javascript
js实现touch移动触屏滑动事件
2015/04/17 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
在Vue methods中调用filters里的过滤器实例
2018/08/30 Javascript
Vue源码解析之数组变异的实现
2018/12/04 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
2019/09/02 Javascript
微信提示 在浏览器打开 效果实现过程解析
2019/09/10 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
使用PYTHON创建XML文档
2012/03/01 Python
python二叉树的实现实例
2013/11/21 Python
python实现堆栈与队列的方法
2015/01/15 Python
Python设置默认编码为utf8的方法
2016/07/01 Python
Python表示矩阵的方法分析
2017/05/26 Python
python爬虫实战之最简单的网页爬虫教程
2017/08/13 Python
python3 selenium 切换窗口的几种方法小结
2018/05/21 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
澳大利亚百货公司:David Jones
2018/02/08 全球购物
匡威西班牙官网:Converse西班牙
2019/10/01 全球购物
法律工作求职自荐信
2013/10/31 职场文书
工作人员思想汇报
2014/01/09 职场文书
公司2014年度工作总结
2014/12/10 职场文书
世界遗产的导游词
2015/02/13 职场文书
python tqdm用法及实例详解
2021/06/16 Python
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers