python生成某个文件夹的目录树

1. 使用背景

一些情况下我们想要生成某个工程文件夹的文件目录,写在文档里面逐一说明每个文件的功能,这是如果能自动生成文件树就是一件很方便的事。

2. 代码

在如下代码中,只需要给定path目录就可以。

from pathlib import Path

tree_str = ''
def generate_tree(pathname, n=0):
    global tree_str
    if pathname.is_file():
        tree_str += '    |' * n + '-' * 4 + pathname.name + '\n'
    elif pathname.is_dir():
        tree_str += '    |' * n + '-' * 4 + \
            str(pathname.relative_to(pathname.parent)) + '\\' + '\n'
        for cp in pathname.iterdir():
            generate_tree(cp, n + 1)

if __name__ == '__main__':
    path = 'D:/xxx/xxx/xxx'
    generate_tree(Path(path), 0)
    print(tree_str)

3. 结果例子

----upernet\
    |----dataloaders\
    |    |----custom_transforms.py
    |    |----custom_transforms.pyc
    |    |----datasets\
    |    |    |----cityscapes.py
    |    |    |----combine_dbs.py
    |    |    |----csot.py
    |    |    |----csot.pyx
    |    |    |----pascal.py
    |    |    |----sbd.py
    |    |----utils.py
    |----doc\
    |    |----deeplab_resnet.py
    |    |----deeplab_xception.py
    |    |----results.png
    |----example\
    |    |----compare_result.py
    |    |----face_convert.py
    |    |----merge_bn.py
    |    |----seg_convert.py
    |    |----verify_deploy.py
    |    |----verify_deploy.py.bak
    |----modeling\
    |    |----aspp.py
    |    |----backbone\
    |    |    |----drn.py
    |    |    |----mobilenet.py
    |    |    |----modified_resnet.py
    |    |    |----resnet.py
    |    |    |----se_ad_modified_resnet.py
    |    |    |----se_modified_resnet.py
    |    |    |----se_module.py
    |    |    |----se_resnet.py.orig
    |    |    |----xception.py
    |    |----decoder.py
    |    |----deeplab.py
    |    |----sync_batchnorm\
    |    |----UperModule.py
    |    |----UperModule_tmp.py
    |    |----upernet.py
    |    |----upernet_tmp.py
    |----pretrained\
    |    |----resnet18-imagenet.pth
    |    |----resnet50-imagenet.pth
    |----utils\
    |    |----calculate_weights.p
    |    |----loss.py
    |    |----loss_half.py
    |    |----lr_scheduler.py
    |    |----metrics.py
    |    |----saver.py
    |    |----summaries.py
    |----options.py
    |----readme.md
    |----test.py
    |----train.py
    |----train_1350L.sh
Python 有一些库可以帮助我们可视化文件夹结构。其一个常用的库是 `os` 模块,它提供了一些用于处理文件目录的函数。另一个常用的库是 `graphviz`,它可以生成各种图形,包括文件夹结构。 在使用 `os` 模块时,我们可以使用函数 `os.walk` 来遍历文件夹的所有文件和子文件夹。这个函数返回一个生成器,我们可以使用循环来迭代它,并获取文件夹的所有项。然后,我们可以使用字符串操作和缩进来打印文件夹结构。以下是一个简单的示例: ```python import os def print_directory_structure(folder_path, indent=''): for root, dirs, files in os.walk(folder_path): print(indent + os.path.basename(root) + '/') for filename in files: print(indent + '├──' + filename) for dirname in dirs: print_directory_structure(dirname, indent + '│ ') # 调用函数并传入文件夹路径 print_directory_structure('path/to/folder') ``` 上面的代码会以形结构打印文件夹的所有文件和子文件夹。其文件夹会使用斜杠“/”表示,文件会使用框线与文件名表示。 如果想要更加美观和可交互的文件夹结构可视化,可以使用 `graphviz` 模块。这个模块可以生成各种图形,包括形结构。下面是一个简单的示例: ```python import os from graphviz import Digraph def draw_directory_structure(folder_path, graph): for root, dirs, files in os.walk(folder_path): graph.node(root) for filename in files: graph.node(filename) graph.edge(root, filename) for dirname in dirs: draw_directory_structure(dirname, graph) graph.edge(root, dirname) # 创建一个空的图形对象 graph = Digraph() # 调用函数并传入文件夹路径和图形对象 draw_directory_structure('path/to/folder', graph) # 展示图形 graph.view() ``` 上面的代码使用 `graphviz` 创建了一个空的图形对象,并通过递归方式遍历文件夹结构,将文件夹文件作为节点,通过边连接起来。最后,调用 `view` 方法可以在新的窗口打开图形。这样就可以以更加美观的方式显示文件夹结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值