python实现Tree命令输出

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: python实现Tree命令输出

实现目标

linux中tree命令可以查看目录树,但是有时候我们并不不能使用这个命令。有可能你没有安装或者你无法进入bash命令行

依赖条件

已经安装好python3.11 ,原则上其他版本也可以

实现代码

主代码

# -*- coding: utf-8 -*-

# __ author:Jack
# date: 2024-04-01

import os

PREFIX = ['└─ ', '├─ ']
INDENTION = ['│  ', ' '*4]

# path : 文件夹全路径
# flag : 是否为最后一个文件(夹),为true 代表最后一个文件(夹),初始值None未被使用
# relation : 每层文件夹的flag属性
def tree(path, flag=None, relation=[]):
    #files = os.listdir(path)
    files = [f for f in os.listdir(path) if not f.startswith(".")]
    files.sort(reverse=True)

    yield ''.join(['' if flag is None else PREFIX[not flag],os.path.basename(path),'\n'])

    if flag is not None:
        relation.append(flag)

    for i in files:
        if i.startswith(".") or i.startswith("__"):
            continue        
        for j in relation:
            yield INDENTION[j]
        tempPath = os.path.join(path,i)
        if not os.path.isdir(tempPath):
            yield ''.join([PREFIX[i!=files[-1]], i, '\n'])
        else:
            for i in tree(tempPath,i==files[-1],relation[:]):
                 print(i,end='')


HOME_DIR="/home/app"
if __name__=='__main__':
    for i in tree(HOME_DIR):
        print(i,end='')

输出样例

app
├─ test.ipynb
├─ source
│  └─ info.json
├─ requirements.txt
├─ models
│  └─ info.json
├─ datasets
│  ├─ D202211002
│  │  ├─ target
│  │  │  ├─ test.xlsx
│  │  │  └─ 17Mxx.zip
│  │  └─ src
│  │      ├─ test.xlsx
│  │      └─ test-1.jpg
│  └─ D202211001
│      ├─ tag
│      │  └─ test-1.jpg
│      └─ original
│          ├─ xx1.png
│          ├─ roi.jpg
│          ├─ readme
│          ├─ 2.jpg
│          └─ 1.89.gif
└─ README.md
目录
相关文章
|
2月前
|
关系型数据库 MySQL 数据库
Python tk dos命令备份mysql数据库
Python tk dos命令备份mysql数据库
36 0
|
2月前
|
Python
python封装执行cmd命令的方法
python封装执行cmd命令的方法
56 0
|
2月前
|
Shell Python
[oeasy]python0003_ 终端大冒险_终端命令_whoami_pwd_ls
[oeasy]python0003_ 终端大冒险_终端命令_whoami_pwd_ls
45 5
|
9天前
|
IDE Linux 数据处理
探索Linux中的`pydoc`命令:Python文档生成器的力量
`pydoc`是Linux上Python的文档生成和查看工具,尤其对数据科学家有价值。它从docstring生成模块、函数和类的文档,提供快速API参考。主要特点包括易用性、支持标准库和第三方库、跨平台。命令行示例:`pydoc pandas` 查看库文档,`pydoc numpy.array` 查看类详情,`pydoc -k 关键字` 进行搜索。使用时注意正确安装Python,编写清晰的docstring,并结合IDE以提升效率。
|
13天前
|
Python
Python异步执行CMD命令的技巧与实践
Python异步执行CMD命令的技巧与实践
22 3
|
26天前
|
监控 Unix 程序员
Python 实现 Unix 'tail' 命令的完整解决方案
这是一个关于Python实现的 tail 命令库的摘要,最初由一个斯里兰卡程序员编写。代码中存在一个问题,在获取文件大小时可能抛出文件不存在的异常,已修复此 bug,添加了错误处理。修复后的代码包含一个名为 `wait_file_get_size` 的函数,用于安全地获取文件大小。此外,提供了类 `Tail`,用于监视文件变化,并可注册回调函数处理新行。
|
27天前
|
持续交付 Python
解决Python执行命令时路径空格引发的困扰
在Python编程中,执行含空格的系统命令可能导致程序出错。本文介绍了如何处理这类问题:1) 使用引号包裹路径;2) 转义空格字符;3) 利用`os`模块的`normpath()`或`join()`处理路径;4) 使用`subprocess`模块进行更复杂的命令执行。最佳实践包括避免路径空格、使用`os.path.join()`构建路径及熟悉`subprocess`。
解决Python执行命令时路径空格引发的困扰
|
1月前
|
NoSQL Redis Python
python中使用redis的常用命令
Python中使用Redis的常用命令。redis-py库提供了一个简单而强大的接口来执行Redis的各种操作。你可以根据需要选择合适的命令来操作Redis数据结构。
20 0
|
2月前
|
Python
【Python进阶(四)】——魔术命令
【Python进阶(四)】——魔术命令
|
2月前
|
Shell 测试技术 Python
在Mac上用Python调用终端执行命令
在Mac上用Python调用终端执行命令
55 1

相关实验场景

更多