Python 递归获取目录下所有嵌套文件夹和文件

Python 递归获取目录下所有嵌套文件夹和文件

指定层级的文件/文件夹的遍历可以通过glob.glob/os.walk实现,但是对于未知文件夹结构时(不知道目录下有多少层文件夹),如何获取所有多级嵌套文件(夹)没有现成的代码,这里使用递归的方案提供一个思路:

# -*- encoding: utf-8 -*-
import os
from os.path import join, isdir

# 把移动硬盘自带的两个文件夹排除
exceptFolders = ["$RECYCLE.BIN", "System Volume Information"]

def getFolders(root):
    """
    获取目录root下所有嵌套文件夹的路径
    """
    output = []
    if isinstance(root, list):
        for item in root:
            output += getFolders(item)
    else:
        tempt = [x for x in os.listdir(root) if x not in exceptFolders]
        dirs = [join(root, x) for x in tempt if isdir(join(root, x))]
        if len(dirs) > 0:
            output += getFolders(dirs)
        else:
            output.append(root)
    return output

if __name__ == "__main__":
	root = r"F:/"
	folderList = sorted(getFolders(root))

即可得到,目录下未知文件结构的所有子文件夹的路径。
该目录下的所有文件,则可以在上述的基础上再增加如下代码获取:

def getFile(dirList):
    """
    获取目录列表dirList下所有文件的路径
    """
    output = []
    for dir in dirList:
        output += [join(dir, x) for x in os.listdir(dir) if isfile(join(dir, x))]
    return output

if __name__ == "__main__":
    root = r"F:/"
    folderList = sorted(getFolders(root))
    fileList = getFile(folderList)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值