【面试题】实现文件夹中文件的遍历输出

简介: 【面试题】实现文件夹中文件的遍历输出

p>&nbsp;</p>

<p>在之前的文章中:https://www.cnblogs.com/leiziv5/p/7411091.html,分享了基于python去递归查找文件中的文件。在后续的接触中,可以基于深度遍历和广度遍历来实现 
</p>
<p>

1.深度遍历实现


对应实现思路:


1.创建栈


2.增加路径


3.当栈不为空,处理栈的一个路径


4.遍历路径下面的每一项


5.遇到文件夹加入到栈中


6.知道栈中元素为空,退出


import os
path = '.'
def GetAllDeep(path):
    stack = []
    stack.append(path)
    # 处理栈,当栈为空时结束循环
    while len(stack) != 0:
        # 从栈里取出数据
        DirPath = stack.pop()
        # 目录下所有文件
        num = 0
        file_num = 0
        FileList = os.listdir(DirPath)
        # 循环处理每个文件
        for FileName in FileList:
            FileAbsPath = os.path.join(DirPath,FileName)
            if os.path.isfile(FileAbsPath) == True:
                print("是文件",FileAbsPath)
                num += 1
            else:
                # print("是目录",FileAbsPath)
                stack.append(FileAbsPath)
                file_num += 1
        print('当前文件数量:%s' % num, '当前文件夹数量%s' % file_num, '路径是:%s' % (FileAbsPath))


我们看下最后的结果


image.png


2.广度优先遍历实现思路


1.创建一个队列
2.队列增加文件路径
3.当队列不为空,获取队列
4.遍历某个路径,判断是文件输出,是文件夹加入队列
5.直到队列为空,程序终止运行。


看下最后的代码实现


import os, collections
# 广度遍历目录
def Get_All_Dir_Scope(path:str):
    #创建队列
    queue = collections.deque()
    # 进队
    queue.append(path)
    print("queue =", queue)
    while len(queue) != 0:
        # 出队数据
        File_Path = queue.popleft()
        # print(FilePath)
        # 找出所有的文件
        num = 0
        file_num = 0
        FileNameList = os.listdir(File_Path)
        for fileName in FileNameList:
            fileAbsPath = os.path.join(File_Path, fileName)
            if os.path.isfile(fileAbsPath):
                print("是文件", fileAbsPath)
                num += 1
            else:
                file_num += 1
                queue.append(fileAbsPath)
        print('当前文件数量:%s' % num, '当前文件夹数量%s' % file_num, '路径是:%s' % (fileAbsPath))


 我们去传递一个路径,遍历里面文件


path = '.'
Get_All_Dir_Scope(path)


最后打印结果


image.png


可以看到上面的结果,和我们想要的输出是一致的。


基于广度遍历的方式就实现完毕。其实很简单。

 

相关文章
|
4天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
16 2
|
6月前
|
数据采集 JSON 数据挖掘
2024年利用Python查询IP地址_怎么查python文件中ip地址,2024年最新15个经典面试问题及答案英语
2024年利用Python查询IP地址_怎么查python文件中ip地址,2024年最新15个经典面试问题及答案英语
|
3月前
|
Java
【Java基础面试二】、个Java文件里可以有多个类吗(不含内部类)?
这篇文章讨论了Java文件中类的定义规则,指出一个Java文件可以包含多个类(不包含内部类),但其中最多只能有一个public类,且如果有public类,它的名称必须与文件名一致。
|
4月前
|
存储 关系型数据库 MySQL
面试题MySQL问题之FastDFS中的文件重复上传如何解决
面试题MySQL问题之FastDFS中的文件重复上传如何解决
43 1
|
5月前
|
存储 Java 数据库
面试官:字节流可以处理一切文件为什么还需要字符流呢?
【6月更文挑战第8天】面试官:字节流可以处理一切文件为什么还需要字符流呢?
62 7
|
5月前
|
存储 Java 编译器
【搞定Jvm面试】 面试官:谈谈 JVM 类文件结构的认识
【搞定Jvm面试】 面试官:谈谈 JVM 类文件结构的认识
|
6月前
|
数据采集 数据安全/隐私保护 Python
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
|
6月前
|
开发工具 Python
2024年最新【Python】关于Python打开文件&&上下文管理器(1),2024华为Python面试真题解
2024年最新【Python】关于Python打开文件&&上下文管理器(1),2024华为Python面试真题解
2024年最新【Python】关于Python打开文件&&上下文管理器(1),2024华为Python面试真题解
|
6月前
|
数据安全/隐私保护 Python
Python文件与目录操作:面试中的高频考点
【4月更文挑战第15天】本文介绍了Python文件和目录操作的面试重点,包括文件的读写、目录遍历及权限管理。强调了文件关闭、异常处理、特殊文件判断以及权限位和权限字符串的理解。提供了代码示例,如读写文件、遍历目录和更改文件权限,帮助读者在面试中表现出色。掌握这些技能将对编程求职之路大有裨益。
37 0
|
6月前
|
机器学习/深度学习 算法 Java
递归算法还有哪些是你不知道的----【探讨Java经典遍历问题和面试题】
递归算法还有哪些是你不知道的----【探讨Java经典遍历问题和面试题】
59 1