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 相关文章推荐
记录Django开发心得
Jul 16 Python
python字典get()方法用法分析
Apr 17 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
Dec 15 Python
聊聊Python中的pypy
Jan 12 Python
python调用百度地图WEB服务API获取地点对应坐标值
Jan 16 Python
Python3视频转字符动画的实例代码
Aug 29 Python
导入tensorflow时报错:cannot import name 'abs'的解决
Oct 10 Python
python库matplotlib绘制坐标图
Oct 18 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
Sep 30 Python
python import 上级目录的导入
Nov 03 Python
解决python绘图使用subplots出现标题重叠的问题
Apr 30 Python
Python实现随机生成迷宫并自动寻路
Jun 13 Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
PyQt5 QThread倒计时功能的实现代码
Apr 02 #Python
Python中Permission denied的解决方案
Apr 02 #Python
python爬不同图片分别保存在不同文件夹中的实现
Python读取文件夹下的所有文件实例代码
如何用python识别滑块验证码中的缺口
You might like
php递归函数中使用return的注意事项
2014/01/17 PHP
PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
2014/07/15 PHP
php实现图片上传并进行替换操作
2016/03/15 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
jQuery帮助之筛选查找 children([expr])
2011/01/31 Javascript
jquery each的几种常用的使用方法示例
2014/01/21 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
jQuery DOM插入节点操作指南
2015/03/03 Javascript
node.js微信公众平台开发教程
2016/03/04 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
jQuery网页定位导航特效实现方法
2016/12/19 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
JS实现获取数组中最大值或最小值功能示例
2019/03/02 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
基于vue.js实现购物车
2020/01/15 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
Python3 中文文件读写方法
2018/01/23 Python
mac下给python3安装requests库和scrapy库的实例
2018/06/13 Python
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
Django 实现前端图片压缩功能的方法
2019/08/07 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
利用python在excel中画图的实现方法
2020/03/17 Python
帕克纽约:PARKER NY
2018/12/09 全球购物
英国领先的互联网葡萄酒礼品商:Vintage Wine & Port
2019/05/24 全球购物
2015年学校团委工作总结
2015/05/26 职场文书
人民的好儿女观后感
2015/06/18 职场文书
2015年主婚人婚礼致辞
2015/07/28 职场文书
《青山不老》教学反思
2016/02/22 职场文书
详解Redis基本命令与使用场景
2021/06/01 Redis
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
2021/06/09 Python
Golang使用Panic与Recover进行错误捕获
2022/03/22 Golang