前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【面试题】实现文件夹中文件的遍历输出

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

作者头像
雷子
发布2022-04-06 08:30:58
4180
发布2022-04-06 08:30:58
举报
文章被收录于专栏:雷子说测试开发

在之前我们有过这样的分享java递归实现文件夹文件的遍历输出,我们看下如何用python实现?

主要思路:

代码语言:javascript
复制
1.输入目录
2.遍历目录里面的每一项是否是文件或者文件夹
3.文件记录文件,文件夹记录文件夹,同时用递归的方式去遍历文件夹即可。
代码语言:javascript
复制
实现代码
import os
def filenum(path):
    if os.path.isfile(path):
        print(path)
        print('file num is 1 ')
        return
    num=0
    file_num=0
    for i in (os.listdir(path)):
        filepath=os.path.join(path,i)
        if os.path.isfile(filepath):
            num+=1
            print('文件是:%s'%filepath)
        else:
            print('当前目录%s'%filepath)
            file_num+=1
            filenum(filepath)
    print('当前文件数量:%s'%num,'当前文件夹数量%s'%file_num,'路径是:%s'%(path))
filenum('.')

我们看下输出的结果是什么?

这样满足了我们的需求,我们还可以看看有没有更好的输出方式呢

我们可以利用栈加深度遍历的方式去实现上述的问题

代码语言:javascript
复制
1.创建栈
2.增加路径
3.当栈不为空,处理栈的一个路径
4.遍历路径下面的每一项
5.遇到文件夹加入到栈中
6.知道栈中元素为空,退出

我们去按照上面的设想去实现代码。

代码语言:javascript
复制
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))

GetAllDeep(path)

以上的代码呢,可能是众多方案中的其中的几个实现,也会有其他的更好的代码。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档