当前位置: 首页 > news >正文

python树状打印项目路径

学习这个的需求来自于,我想把项目架构告诉gpt问问它,然后不太会打印项目架构😂 联想到Linux的tree指令

import osclass DirectoryTree:def __init__(self, path):self.path = pathdef print_tree(self, method='default'):if method == 'default':self._print_dir_tree(self.path)elif method == 'with_count':self._print_dir_tree_with_count(self.path)elif method == 'files_only':self._print_files_only(self.path)elif method == 'with_symbols':self._print_dir_tree_with_symbols(self.path)else:print("Invalid method!")def _print_dir_tree(self, path, indent=0):print(' ' * indent + '|---' + os.path.basename(path))for item in os.listdir(path):itempath = os.path.join(path, item)if os.path.isdir(itempath):self._print_dir_tree(itempath, indent + 2)else:print(' ' * (indent + 2) + '|---' + item)def _print_dir_tree_with_count(self, path, indent=0):print(' ' * indent + '|---' + os.path.basename(path), end=' ')items = os.listdir(path)dirs = sum(1 for item in items if os.path.isdir(os.path.join(path, item)))files = len(items) - dirsprint(f"(dirs: {dirs}, files: {files})")for item in items:itempath = os.path.join(path, item)if os.path.isdir(itempath):self._print_dir_tree_with_count(itempath, indent + 2)else:print(' ' * (indent + 2) + '|---' + item)def _print_files_only(self, path, indent=0):for item in os.listdir(path):itempath = os.path.join(path, item)if os.path.isdir(itempath):self._print_files_only(itempath, indent)else:print(' ' * indent + '|---' + item)def _print_dir_tree_with_symbols(self, path, indent=0):print(' ' * indent + '📁 ' + os.path.basename(path))for item in os.listdir(path):itempath = os.path.join(path, item)if os.path.isdir(itempath):self._print_dir_tree_with_symbols(itempath, indent + 2)else:print(' ' * indent + '📄 ' + item)class EnhancedDirectoryTree:def __init__(self, path):self.path = pathself.show_hidden = Falseself.depth_limit = Noneself.show_files = Trueself.show_dirs = Truedef display_settings(self, show_hidden=False, depth_limit=None, show_files=True, show_dirs=True):self.show_hidden = show_hiddenself.depth_limit = depth_limitself.show_files = show_filesself.show_dirs = show_dirsdef print_tree(self):self._print_dir(self.path)def _print_dir(self, path, indent=0, depth=0):if self.depth_limit is not None and depth > self.depth_limit:returnif self.show_dirs:print(' ' * indent + '📁 ' + os.path.basename(path))for item in sorted(os.listdir(path)):# Check for hidden files/foldersif not self.show_hidden and item.startswith('.'):continueitempath = os.path.join(path, item)if os.path.isdir(itempath):self._print_dir(itempath, indent + 2, depth + 1)else:if self.show_files:print(' ' * indent + '📄 ' + item)# 创建类的实例
tree = DirectoryTree(os.getcwd())# 使用默认方法打印
print("Default:")
tree.print_tree()# 使用带计数的方法打印
print("\nWith Count:")
tree.print_tree(method='with_count')# 使用只打印文件的方法
print("\nFiles Only:")
tree.print_tree(method='files_only')# 使用emoji
print("\nWith Symbols:")
tree.print_tree(method='with_symbols')print('================================================================')enhancedtree = EnhancedDirectoryTree(os.getcwd())# Default print
enhancedtree.print_tree()print("\n---\n")# Configure settings to show hidden files, but only up to depth 2 and only directories
enhancedtree.display_settings(show_hidden=True, depth_limit=2, show_files=False)
enhancedtree.print_tree()print("\n---\n")# Configure settings to show only files up to depth 1
enhancedtree.display_settings(show_files=True, show_dirs=False, depth_limit=1)
enhancedtree.print_tree()
  • os.getcwd(): 返回当前工作目录的路径名。

  • os.path.basename(path): 返回路径名 path 的基本名称,即去掉路径中的目录部分,只保留文件或目录的名称部分。

  • os.listdir(path): 返回指定路径 path 下的所有文件和目录的名称列表。

  • os.path.isdir(path): 判断路径 path 是否为一个目录,如果是则返回 True,否则返回 False

  • os.path.join(path, *paths): 将多个路径组合成一个完整的路径名。这个函数会自动根据操作系统的不同使用不同的路径分隔符。

  • 上面两个类里面的函数其实就是用到递归,第二个类的那个函数可以设置递归深度

相关文章:

python树状打印项目路径

学习这个的需求来自于,我想把项目架构告诉gpt问问它,然后不太会打印项目架构😂 联想到Linux的tree指令 import osclass DirectoryTree:def __init__(self, path):self.path pathdef print_tree(self, methoddefault):if method default:sel…...

mysql误删误操作恢复数据,比传统方式和binlog2sql更快速用的恢复方式-reverse_sql恢复数据(单表多表)

场景: 误操作删除了某个表的数据,本文只讲工具的使用,首先自己通过mysqlbinlog或者记录找到误操作的时间范围:开始时间和结束时间,已经确定好是哪个binlog了下面以误删为例。 查看binlog是否开启 show variables like …...

CORE: Cooperative Reconstruction for Multi-Agent Perception 论文阅读

论文连接 CORE: Cooperative Reconstruction for Multi-Agent Perception 0. 摘要 本文提出了 CORE,一种概念简单、有效且通信高效的多智能体协作感知模型。 从合作重建的新颖角度解决了该任务: 合作主体共同提供对环境的更全面的观察整体观察可以作为…...

MySQL连接方式: Unix套接字 TCP/IP

今天连接mysql数据库使用mysql -u root -p指令的时候遇到了这个问题: 解决之后来总结一下mysql的连接方式 文章目录 1. Unix套接字(或Windows命名管道)特点:场景: 2. TCP/IP特点:场景: 3.对比总…...

TSINGSEE青犀智慧城市数字基座解决方案,助力城市数字化转型

一、行业背景 我国“十四五”规划纲要中提出,分级分类推进新型智慧城市建设,将物联网感知设施、通信系统等纳入公共基础设施统一规划建设,推进市政公用设施、建筑等物联网应用和智能化改造。完善城市信息模型平台和运行管理服务平台&#xf…...

【JavaEE】初识网络

网络初识 文章目录 网络初识网络发展史独立模式网络互连局域网LAN广域网 网络通信基础IP地址端口号格式 协议五元组协议分层OSI七层模型TCP/IP五(四)层协议1.物理层2.数据链路层3.网络层4.传输层5.应用程序 网络设备所在的分层封装和分用例子发送方接收方…...

UGUI交互组件ScrollBar

一.ScrollBar的结构 对象说明Scrollbar挂有Image和Scrollbar组件的主体对象Sliding Area表示滑动范围Handle滑块 二.Scrollbar的属性 属性说明Handle Rect控制柄对象的引用Direction拖动控制柄时滚动条值增加的方向Value滚动条的当前值,范围为 0.0 到 1.0Suze控制柄…...

DamiBus v0.51 发布

DamiBus,专为本地多模块之间通讯解耦而设计(尤其是未知模块、隔离模块、领域模块)。零依赖,特适合 DDD。 特点 结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用,可作响应订阅。 支持事务传…...

[OpenJDK:环境变量配置]:填充Profile并修改默认配置

文章目录 一:背景:安装hadoop启动提示未找到JAVA_HOME1.1:配置Hadoop的Java环境变量 二:排查-定位解决2.1:查看环境变量配置发现没有JAVA_HOME2.1.1:解决:查看java安装目录2.1.2:再次…...

连接mysql报错 :Host ‘xxx.xx.x.x‘ is not allowed to connect to this MySQL server

排查思路 命令行连接mysql 我是安装在本地docker容器中的,可以使用一下命令直接连接 docker exec -it mysqldb mysql -u root -p其中mysqldb是我的mysql容器名字,后面跟随mysql的连接命令,然后输入密码即可。 如果没有设置过密码&#xff0c…...

Qt 布局(QSplitter 类QDockWidget 类) 总结

一、QSplitter 类(窗口分割) QSplitter类是一个Qt框架提供的基础窗口控件类,用于分割窗口,使得用户可以通过拖动分隔条来调节子窗口的大小。QSplitter在用户界面设计中非常常见,经常用于划分窗口区域,使得程序可以同时显示多个子…...

git-ssh-key协议同步文件

生成秘钥 ssh-keygen -t rsa ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/Beza/.ssh/id_rsa): /c/Users/Beza/.ssh/id_rsa already exists. Overwrite (y/n)? y Enter passphrase (empty for no passphrase): …...

2018-2019 ACM-ICPC, Asia Nanjing Regional Contest G. Pyramid(组合数学 计数)

题目 t(t<1e6)组样例&#xff0c;每次给定一个n(n<1e9)&#xff0c;统计边长为n的上述三角形的等边三角形个数 其中等边三角形的三个顶点&#xff0c;可以在所有黑色三角形&白色三角形的顶点中任取&#xff0c; 答案对1e97取模 思路来源 申老师 & oeis A0003…...

C++学习——string 详解(即C++字符串详解)

以下内容源于C语言中文网的学习与整理&#xff0c;非原创&#xff0c;如有侵权请告知删除。 一、定义string变量的方法 C增强了对字符串的支持&#xff0c;除了可以使用C风格的字符串&#xff0c;还可以使用内置的 string 类。 string是类&#xff0c;而不是基本数据类型。虽…...

LeetCode 1 两数之和

题目描述 链接&#xff1a;https://leetcode.cn/problems/two-sum/?envTypefeatured-list&envId2ckc81c?envTypefeatured-list&envId2ckc81c 难度&#xff1a;简单 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 targ…...

【opencv】windows10下opencv4.8.0-cuda Python版本源码编译教程

【opencv】windows10下opencv4.8.0-cuda Python版本源码编译教程 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【opencv】windows10下opencv4.8.0-cuda Python版本源码编译教程前言准备工具anaconda/cuda/cudnnanaconda创建环境(选做)安装原…...

【1day】用友U8Cloud未授权访问漏洞学习

注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现...

基于单片机智能汽车仪表设计系统

基于单片机的汽车智能仪表的设计 摘要&#xff1a;汽车的汽车系统。速度测量以及调速是我们这次的设计所要研究的对象&#xff0c;本次设计的基础核心的模块就是单片机&#xff0c;其应用的核心的控制单元就是stc89c52单片机&#xff0c;用到的测速模块是霍尔传感器&#xff0c…...

java double 保留两位小数

在Java中&#xff0c;你可以使用 DecimalFormat 或 String.format 来保留 double 类型的数字两位小数。以下是两个例子&#xff1a; 使用 DecimalFormat import java.text.DecimalFormat;public class Main {public static void main(String[] args) {double number 123.456…...

计网第六章(应用层)(三)(文件传输协议FTP)

一、基本概念 将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中即文件传送。 FTP就是因特网上使用得最广泛的文件传送协议。采用客户/服务器方式。 FTP提供交互式的访问&#xff0c;允许客户指明文件的类型和格式&#xff08;如指明是否使用ASCII码&#xf…...

微信小程序canvas画布绘制base64图片并保存图片到相册中

WXML部分&#xff1a; <view class"img_" style"width: 100%;"><canvas type"2d" id"canvasId" style"width: 100%;height: 100%" ></canvas> <button style"margin: auto;width: 70%;marg…...

Hadoop3教程(八):MapReduce中的序列化概述

文章目录 &#xff08;79&#xff09;MR序列化概述&#xff08;80&#xff09;自定义序列化步骤&#xff08;81&#xff09;序列化案例需求分析&#xff08;82&#xff09;序列化案例代码参考文献 &#xff08;79&#xff09;MR序列化概述 什么是序列化&#xff0c;什么是反序…...

Flash-Attention

这是一篇硬核的优化Transformer的工作。众所周知&#xff0c;Transformer模型的计算量和储存复杂度是 O ( N 2 ) O(N^2) O(N2) 。尽管先前有了大量的优化工作&#xff0c;比如LongFormer、Sparse Transformer、Reformer等等&#xff0c;一定程度上减轻了Transformer的资源消耗…...

发布npm包质量分测试

查询质量分接口 https://registry.npmjs.org/-/v1/search?textcanvas-plus v0.0.1 quality 0.2987 新建文件夹 canvas-plus 执行命令 npm init 生成package.json {"name": "3r/canvas-plus","version": "0.0.1","descript…...

基于适应度相关优化的BP神经网络(分类应用) - 附代码

基于适应度相关优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于适应度相关优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.适应度相关优化BP神经网络3.1 BP神经网络参数设置3.2 适应度相关算法应用 4…...

复杂网络 | 利用复杂网络预测城市空间流量

文章目录 效果一览文章概述导入必要的包读取时间序列数据,并使用日期做索引将时间序列进行可视化展示取一年的数据进行分析将数据分布进行可视化展示画移动平均图n 代表滑动窗口的大小向前差分法去趋势化线性回归方法去趋势化拟合模型的线性趋势将拟合得到趋势进行可视化detren…...

【1】c++11新特性(稳定性和兼容性)—>原始字面量

在C11中添加了定义原始字符串的字面量&#xff0c;定义方式为&#xff1a;R “xxx(原始字符串)xxx”其中&#xff08;&#xff09;两边的字符串可以省略。原始字面量R可以直接表示字符串的实际含义&#xff0c;而不需要额外对字符串做转义或连接等操作。 编程过程中&#xff0c…...

学习pytorch13 神经网络-搭建小实战Sequential的使用

神经网络-搭建小实战&Sequential的使用 官网模型结构根据模型结构和数据的输入shape&#xff0c;计算用在模型中的超参数coderunning log网络结构可视化 B站小土堆pytorch视频学习 官网 https://pytorch.org/docs/stable/generated/torch.nn.Sequential.html#torch.nn.Se…...

TCP发送接口(如send(),write()等)的返回值与成功发送到接收端的数据量无直接关系

1. TCP发送接口&#xff1a;send() TCP发送数据的接口有send&#xff0c;write&#xff0c;sendmsg。在系统内核中这些函数有一个统一的入口&#xff0c;即sock_sendmsg()。由于TCP是可靠传输&#xff0c;所以对TCP的发送接口很容易产生误解&#xff0c;比如sn send(...); 错误…...

【Python、Qt】使用QItemDelegate实现单元格的富文本显示+复选框功能

主打一个 折磨 坑多 陪伴。代码为Python&#xff0c;C的就自己逐条语句慢慢改吧。 Python代码&#xff1a; import sys from types import MethodType from PyQt5.QtCore import Qt,QPoint,QSize,QRect,QEvent from PyQt5.QtGui import QStandardItemModel, QStandardItem,QTe…...

动软代码生成器 做网站/seo最新教程

为什么80%的码农都做不了架构师&#xff1f;>>> 所谓的文章修订版就是你每次修改一次文章&#xff0c;它都会自动帮你保存修改之前的文章版本&#xff0c;专业术语叫做版本控制&#xff0c;这样保证了在误修改的情况下可以还原之前的内容&#xff0c;这种功能对我们…...

深圳去聋哑做义工申请网站/营销策略是什么

shell中的循环语法 作者&#xff1a;尹正杰 版权声明&#xff1a;原创作品&#xff0c;谢绝转载&#xff01;否则将追究法律责任。 一.for循环1.语法格式11 for 变量 in 值1 值2 值3 ... 2 do 3   源代码 4 done 2.语法格式21 for (( 初始值&#xff1b;循环控制条件&#xf…...

网站制作眼/网页模板怎么用

华为的HCIP的考试是三门课程 考试代码腾科认证考试H12-221HCIP-Routing & Switching-IERS&#xff08;Implementing Enterprise Routing and Switching Network&#xff09;H12-222HCIP-Routing & Switching-IENP&#xff08;Improving Enterprise Network Performance…...

网站首页置顶是怎么做/免费网站排名优化在线

阅读本文大概需要 10 分钟。Docker是一个不断发展的系统&#xff0c;开发人员积极改进使用和性能。所以命令总是在变化。docker一些老的命令经常被弃用&#xff0c;并被新的或更有效的命令取代。您可以使用帮助选项检查Docker安装上的最新可用命令&#xff1a;$ docker --help…...

大良营销网站建设服务/申请一个网站

Redis下载地址&#xff1a; http://download.redis.io/releases/ 里面是Linux环境下的各个版本...

大兴做网站/开源crm系统

1、找不到方法的实现unrecognized selector sent to instance 2、KVC造成的crash 3、EXC_BAD_ACCESS 4、KVO引起的崩溃 5、集合类相关崩溃 6、多线程中的崩溃 7、Socket长连接&#xff0c;进入后台没有关闭 8、Watch Dog超时造成的crash 9、后台返回NSNull导致的崩溃&a…...