【工具】列出指定文件夹下所有的目录和文件

帮我写一个python代码列出指定文件夹下所有的目录和文件 可选是否列出子文件夹及文件扩展名 也可以排除扩展名 并输出到文件

代码说明:1. 该函数通过递归遍历目录结构,列出所有文件和子目录。

  1. 支持控制是否包含子目录、指定包含或排除特定扩展名的文件。

  2. 可将结果输出到指定文件或直接打印到控制台。

  3. 处理了权限不足的情况,避免程序崩溃。

  4. 使用缩进表示目录层级结构,使输出更清晰易读。

python 复制代码
import os

def list_files_and_dirs(root_dir, include_subdirs=True, include_extensions=None, exclude_extensions=None, output_file=None):
    """
    列出指定文件夹下的所有目录和文件
    :param root_dir: 根目录路径
    :param include_subdirs: 是否包含子目录
    :param include_extensions: 包含的文件扩展名列表,None表示所有
    :param exclude_extensions: 排除的文件扩展名列表,None表示不排除
    :param output_file: 输出文件路径,None表示输出到控制台
    """
    result = []
    
    def traverse(path, level=0):
        try:
            items = os.listdir(path)
        except PermissionError:
            result.append(f"{'  ' * level}! 权限不足: {path}")
            return
        
        for item in items:
            item_path = os.path.join(path, item)
            if os.path.isdir(item_path):
                result.append(f"{'  ' * level}📁 {item}/")
                if include_subdirs:
                    traverse(item_path, level + 1)
            else:
                ext = os.path.splitext(item)[1]
                if include_extensions is not None and ext not in include_extensions:
                    continue
                if exclude_extensions is not None and ext in exclude_extensions:
                    continue
                result.append(f"{'  ' * level}📄 {item}")
    
    traverse(root_dir)
    
    output_content = "\n".join(result)
    
    if output_file:
        with open(output_file, 'w', encoding='utf-8') as f:
            f.write(output_content)
        print(f"结果已输出到 {output_file}")
    else:
        print(output_content)

if __name__ == "__main__":
    # 示例调用
    list_files_and_dirs(
        root_dir=".",
        include_subdirs=True,
        include_extensions=None,
        exclude_extensions=['.tmp', '.log'],
        output_file="file_list.txt"
    )
相关推荐
Escalating_xu1 分钟前
C++可变参数模板与引用折叠精讲
开发语言·c++
wuyk5556 分钟前
59.嵌入式C语言高级宏定义实战:多行宏、字符串化与符号拼接
c语言·开发语言·stm32·单片机·嵌入式硬件·物联网·51单片机
整點薯條8 分钟前
Vue3+vite创建项目架构文件说明总结
前端·javascript·vue.js
云泽80812 分钟前
Visual Studio 2026 新手保姆级教程:环境搭建、界面优化与编译器配置详解
开发语言·c++·c·开发工具·visual studio
掘金一周28 分钟前
想问问掘友们:AI 时代,资深开发的核心价值到底在哪里?| 沸点周刊 7.23
前端·人工智能·后端
橘子星37 分钟前
🚀 手把手带你写一个端侧 AI 应用的"加载进度条"与"聊天对话框"
前端·人工智能
2zcode1 小时前
基于MATLAB深度学习的乳腺钼靶影像乳腺癌智能诊断系统设计与实现
开发语言·深度学习·matlab·乳腺癌
MoonBit月兔1 小时前
错过大赛报名?MoonBit 开源大赛- 8 月黑客松正式开启
开发语言·ai-native·moonbit
小猴子爱上树1 小时前
一站式解决图片视频翻译难题的高效AI工具
人工智能·python·音视频
weixin_538601971 小时前
智能体测开Day31
开发语言·python