python实现Tree命令输出

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,1000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 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
目录
相关文章
|
12月前
|
安全 网络安全 文件存储
思科设备巡检命令Python脚本大集合
【10月更文挑战第18天】
382 1
思科设备巡检命令Python脚本大集合
|
9月前
|
运维 Shell 数据库
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
246 20
|
10月前
|
分布式计算 MaxCompute 对象存储
|
9月前
|
安全 Shell 数据处理
使用Python执行Shell命令并获取结果
在实际应用中,可以根据需要选择适当的参数和方法来执行Shell命令,并处理可能出现的各种情况。无论是系统管理、自动化任务还是数据处理,掌握这些技巧都将极大地提高工作效率。
298 12
|
12月前
|
Python
Python PDB命令介绍
【10月更文挑战第15天】 使用PDB的方式有两种,其中一种是在脚本中添加代码,不觉得这种方式比print好在哪里,所以这种方式此文不表。这里我们只学习PDB的命令行使用方式
280 4
|
12月前
|
机器学习/深度学习 缓存 PyTorch
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
这篇文章是关于如何下载、安装和配置Miniconda,以及如何使用Miniconda创建和管理Python环境的详细指南。
3781 0
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
|
机器学习/深度学习 Shell 开发工具
Python使用管道执行git命令报错|4-7
Python使用管道执行git命令报错|4-7
|
Unix Shell Linux
nohup python -u ai_miniprogram_main.py > ../iwork.out 2>&1 & 这句命令是做什么的?
nohup python -u ai_miniprogram_main.py > ../iwork.out 2>&1 & 这句命令是做什么的?
85 1
|
12月前
|
机器学习/深度学习 缓存 Linux
python环境学习:pip介绍,pip 和 conda的区别和联系。哪个更好使用?pip创建虚拟环境并解释venv模块,pip的常用命令,conda的常用命令。
本文介绍了Python的包管理工具pip和环境管理器conda的区别与联系。pip主要用于安装和管理Python包,而conda不仅管理Python包,还能管理其他语言的包,并提供强大的环境管理功能。文章还讨论了pip创建虚拟环境的方法,以及pip和conda的常用命令。作者推荐使用conda安装科学计算和数据分析包,而pip则用于安装无法通过conda获取的包。
1147 0
|
Linux iOS开发 MacOS
python的virtualenv虚拟环境常见问题和命令
`venv`是Python的内置模块,用于创建隔离的虚拟环境。创建虚拟环境如`python3 -m venv myenv`,激活环境在Windows上是`./venv/Scripts/activate`,在Unix-like系统是`source myenv/bin/activate`。退出环境用`deactivate`。`pip list`查看已安装包,`pip install`安装包,`pip freeze > requirements.txt`保存依赖。PyCharm中红色`venv`表示项目使用了虚拟环境。
629 2
 python的virtualenv虚拟环境常见问题和命令

推荐镜像

更多