python生成文件目录树状图(仅用Python自带模块)

一、前言

在github浏览时,不时地能看到README页面中的项目文件目录树状图,将项目文件有序排列,如同Windows文件资源管理器左侧的列表。
它的好处是:赏心悦目、一目了然。当项目有各种文件夹时,无需进入各个文件夹,即可快速了解:项目全部文件的位置分布。
于是,打算使用Python作为工具,参考网络资料,实现一下这种效果。
大致浏览并运行了优快云中的相关Python实现代码,发现要么需要安装、导入第三方库,不太方便;要么实现的效果不太符合预期(如下图,在已出现转折的下方,仍有线条出现)。

二、预期效果

三、实现

1. 代码

参考资料:

  1. Python——生成项目文件树状图
  2. python生成某个文件夹的目录树

(1)使用全局变量

#! /usr/bin/env python3
# -*- coding: UTF-8 -*-
"""显示目录树状图"""
import os

# site存储出现转折的层级号
site = []


def generate_file_tree_global(path, depth):
    """
    递归打印文件目录树状图(使用全局变量)
    
    :param path: 根目录路径
    :param depth: 根目录、文件所在的层级号
    :return: None
    """
    global site
    filenames_list = os.listdir(path)
    if len(filenames_list) < 1:
        return
    # 本级目录最后一个文件名
    last_filename = filenames_list[-1]

    for item in filenames_list:
        string_list = 
### Android 12 源码树状结构 Android 的源代码遵循一种模块化的目录结构设计,这种设计使得开发者可以更方便地定位和修改特定功能的实现[^1]。对于 Android 12 版本而言,其完整的源码可以通过 AOSP (Android Open Source Project) 获取,并且它的文件夹层次清晰地划分了不同的组件。 以下是 Android 12 源码的主要目录及其作用概述: #### 主要目录说明 - **`build/`**: 包含构建系统的脚本以及配置文件。 - **`device/`**: 存放设备制造商定制的内容,比如针对不同硬件平台的支持。 - **`frameworks/`**: 这里包含了核心框架层的核心库和服务定义,例如 `base`, `av` 和其他支持多媒体、UI 等的功能模块。 - **`hardware/`**: 提供 HAL(Hardware Abstraction Layer)接口及相关驱动程序。 - **`kernel/`**: Linux 内核部分,用于适配各种芯片组和支持底层操作。 - **`packages/`**: 应用包所在位置,包括系统自带的应用程序如设置界面、联系人管理器等。 - **`system/`**: 关键子系统的位置,例如启动引导加载程序 (`coreboot`) 或者 SELinux 配置。 通过这些主要分类可以看出整个项目的复杂性和规模之大。如果希望获得可视化的树形视,则需要借助工具来生成形化展示形式。 为了创建这样的表,您可以考虑以下方法之一: 1. 使用命令行工具 `tree` 来扫描本地克隆下来的仓库并导出成文本格式再转换为片; 2. 利用专门绘制软件架构的应用程序或者插件,在 IDE 中直接预览项目依赖关系; 下面是一个简单的 Python 脚本来调用 system 命令获取当前路径下的所有文件列表作为基础数据处理输入端口: ```python import os def generate_tree(directory, output_file='directory_structure.txt'): with open(output_file, 'w') as f: for root, dirs, files in os.walk(directory): level = root.replace(directory, '').count(os.sep) indent = ' ' * 4 * (level) f.write(f"{indent}{os.path.basename(root)}/\n") sub_indent = ' ' * 4 * (level + 1) for file_name in files: f.write(f"{sub_indent}{file_name}\n") if __name__ == "__main__": target_directory = "/path/to/android/source" generate_tree(target_directory) ``` 此段代码可以帮助快速整理出指定目标内的详细布局情况以便进一步分析研究[^2]. 此外值得注意的是某些高级别的度量标准可能还会涉及到持久性评估等方面的知识点[^3],但这通常是在深入理解基本概念之后才会涉及的部分.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值