python 遍历磁盘目录的三种方法

作者:克莱汤普森 时间:2021-10-15 06:36:14 

目录
  • 深度遍历

    • 递归

    • 用栈来遍历磁盘

  • 广度遍历磁盘

    • 用队列遍历磁盘

深度遍历

递归


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)

来源:https://blog.csdn.net/m0_49397655/article/details/115360002

标签:python,遍历,磁盘,目录
0
投稿

猜你喜欢

  • Python3 适合初学者学习的银行账户登录系统实例

    2021-06-16 05:09:22
  • 如何基于Python按行合并两个txt

    2021-03-19 08:24:41
  • python避免死锁方法实例分析

    2023-08-04 04:32:59
  • JavaScript ParseFloat()方法

    2024-04-29 13:35:48
  • Go语言基础go接口用法示例详解

    2024-04-30 10:06:53
  • 利用Tensorflow的队列多线程读取数据方式

    2021-12-24 17:32:30
  • Python实现定时备份mysql数据库并把备份数据库邮件发送

    2024-01-18 09:48:04
  • python playwright之元素定位示例详解

    2023-06-14 01:08:41
  • Oracle DBA常用语句

    2009-08-05 20:15:00
  • 如何将服务器上的python代码通过QQ发送回传信息(附实现方法)

    2022-04-24 04:27:08
  • Python 异常处理Ⅳ过程图解

    2023-06-28 16:05:53
  • python爬虫爬取指定内容的解决方法

    2022-11-07 11:32:12
  • Python利用scapy实现ARP欺骗的方法

    2021-07-24 08:26:03
  • Python编译成.so文件进行加密后调用的实现

    2022-11-17 12:49:54
  • Python实现破解网站登录密码(带token验证)

    2021-09-29 06:22:22
  • Python绘制百分比堆叠柱状图并填充图案

    2023-01-25 00:49:06
  • 用CSS3和HTML5五步打造便签效果

    2012-04-25 20:47:51
  • python实现统计代码行数的方法

    2021-06-23 11:24:17
  • 用js封装的时间设置器

    2013-08-04 23:28:46
  • Python写了个疫情信息快速查看工具实例代码

    2021-10-31 15:26:52
  • asp之家 网络编程 m.aspxhome.com