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 03 Python
Python实现抓取网页并且解析的实例
Sep 20 Python
python映射列表实例分析
Jan 26 Python
Python数据拟合与广义线性回归算法学习
Dec 22 Python
用python制作游戏外挂
Jan 04 Python
python的Crypto模块实现AES加密实例代码
Jan 22 Python
python中的随机函数小结
Jan 27 Python
Django结合ajax进行页面实时更新的例子
Aug 12 Python
python实例化对象的具体方法
Jun 17 Python
python爬取音频下载的示例代码
Oct 19 Python
如何向scrapy中的spider传递参数的几种方法
Nov 18 Python
基于Python的接口自动化读写excel文件的方法
Jan 15 Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
PyQt5 QThread倒计时功能的实现代码
Apr 02 #Python
Python中Permission denied的解决方案
Apr 02 #Python
python爬不同图片分别保存在不同文件夹中的实现
Python读取文件夹下的所有文件实例代码
如何用python识别滑块验证码中的缺口
You might like
造势之举?韩国总统候选人发布《星际争霸》地图
2017/04/22 星际争霸
由php if 想到的些问题
2008/03/22 PHP
php中拷贝构造函数、赋值运算符重载
2012/07/25 PHP
PHP判断远程图片是否存在的几种方法
2014/05/04 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
laravel5.1 ajax post 传值_token示例
2019/10/24 PHP
jQuery EasyUI 开源插件套装 完全替代ExtJS
2010/03/24 Javascript
javascript学习笔记(五)正则表达式
2011/04/08 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
javascript中的return和闭包函数浅析
2014/06/06 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
2014/06/16 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
jQuery实现鼠标滑过点击事件音效试听
2015/08/31 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
jQuery版AJAX简易封装代码
2016/09/14 Javascript
jsp 网站引入外部css或者js失效问题解决
2016/10/31 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
通过Nodejs搭建网站简单实现注册登录流程
2019/06/14 NodeJs
[03:13]DOTA2-DPC中国联赛1月25日Recap集锦
2021/03/11 DOTA
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
详解Django缓存处理中Vary头部的使用
2015/07/24 Python
老生常谈Python基础之字符编码
2017/06/14 Python
python实现图片彩色转化为素描
2019/01/15 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
2021/01/27 HTML / CSS
html5超简单的localStorage实现记住密码的功能实现
2017/09/07 HTML / CSS
2014乡镇“三八”国际劳动妇女节活动总结
2014/03/01 职场文书
普通话宣传标语
2014/06/26 职场文书
农村文化建设标语
2014/10/07 职场文书
房产分割协议书范文
2014/11/21 职场文书
员工辞职信怎么写
2015/02/27 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
Docker安装MySql8并远程访问的实现
2022/07/07 Servers