使用 Python 画目录树形图

本文介绍了一个简单的Python脚本,用于生成目录结构的树形图。通过递归遍历指定路径下的所有子目录和文件,该脚本能够清晰地展示出整个项目的文件组织结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用 Python 画目录树形图

习惯使用树形图使用来写项目文件的注释,但是每次敲又麻烦自己,于是根据百度搜到的代码再结合自己的需求(当初怎么找到的我真的忘了,作者看到了麻烦联系一下),完成了下面一个简单脚本。

先展示一下效果

这里写图片描述

import 一下必要的库
import os
import sys
根据目录建立列表
def DepthTraversal(nowDir, p):
    # 根据目录建立列表
    baseName = os.path.basename(nowDir)
    c = [baseName]
    p.append(c)

    ls = os.listdir(nowDir)
    for each in ls:
        nextPath = nowDir + os.sep + each
        nextPath_basename = os.path.basename(nextPath)
        if os.path.isdir(nextPath):
            DepthTraversal(nextPath, c)
        else:
            nextPath_basename = os.path.basename(nextPath)
            p.append(nextPath_basename)
根据列表输出树形图
def tree(lst):
    # 树状图输出列表
    l = len(lst)
    if l == 0:
        print('─' * 3)
    else:
        for i, j in enumerate(lst):
            if i != 0:
                #f.write(tabs[0])
                print(tabs[0], end='')
            if l == 1:
                s = '─' * 3
            elif i == 0:
                s = '┬' + '─' * 2
            elif i + 1 == l:
                s = '└' + '─' * 2
            else:
                s = '├' + '─' * 2
            #f.write(s)
            print(s, end='')
            if isinstance(j, list) or isinstance(j, tuple):
                if i + 1 == l:
                    tabs[0] += blank[0] * 3
                else:
                    tabs[0] += '│' + blank[0] * 2
                tree(j)
            else:
                print(j)
                #f.write(j + "\n")
    tabs[0] = tabs[0][:-3]
下面是如何调用

这里采用了脚本参数来传递路径,取消注释部分可以同时把文件输出到文件 “out”。

if __name__ == '__main__':
    try:
        path = os.path.abspath(sys.argv[1])
    except IndexError:
        print("请赋予绝对路径参数")
        exit()
    #f = open("out", 'w')
    TreeList = []
    DepthTraversal(path, TreeList)
    blank = [
        chr(183)]  ##此处为空格格式;Windows控制台下可改为chr(12288) ;linux系统中可改为chr(32)【chr(32)==' ' ;chr(183)=='·' ;chr(12288)==' '】
    tabs = ['']
    tree(TreeList)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值