【Python】自动化构建项目结构样式

news/2024/11/22 22:30:13/

在这里插入图片描述

引言

在使用Python或者其它编程语言的项目时候,编写README.md 往往是不可或缺的;

而在README.md 中,关于项目结构的样式展示,这个是可选的。不展示也无伤大雅,但有展示的话,有以下优点:

  • 提供清晰的项目导航:包含项目结构的文字样式可以让读者快速了解项目的组织方式和文件结构。这对于新加入的开发人员或用户来说尤为重要,他们可以迅速找到所需的文件和模块,并理解它们之间的关系。

但是怎么去编写这个项目结构的样式,却很令人头疼。

手动编写和更新这些结构可能会变得很繁琐和容易出错。因此,有自动生成项目结构文字样式的工具或脚本可以极大地简化这个过程,提高效率并减少错误。

所以本文就是来解决这一痛点!!!


展示

应该没有人不心动吧!!!

下面使用笔者的一个PySide6/PyQT开发的一个项目的项目结构来作展示。

一个Python写的游戏辅助小工具。适用于 咸鱼之王后台挂机、鼠标连击等。

看以下动图展示:

在这里插入图片描述

再来看下面的截图,

在这里插入图片描述

知识点📖📖

模块作用
osos 模块提供了非常丰富的方法用来处理文件和目录

安装依赖

  • 免安装,Python内置

导入模块

import os



主要使用到了os 模块的几个方法,如下(它们在处理文件和目录时非常有用,可以帮助你进行路径操作和文件系统操作):

使用这些函数可以更方便地处理文件路径和目录操作。

  • os.path.join用于安全地连接路径
  • os.path.isdir用于检查路径是否为目录
  • os.path.basename用于提取路径的最后一部分
  • os.getcwd用于获取当前工作目录。
函数解释
os.listdir(path)返回path指定的文件夹包含的文件或文件夹的名字的列表
os.path.join(path, *paths)将多个路径组合成一个完整的路径。根据操作系统的规则处理路径分隔符。
os.path.isdir(path)判断给定的路径是否是一个目录。如果是目录,返回True;否则返回False
os.path.basename(path)返回路径中的最后一部分,即文件名或目录名。如果路径以斜杠结尾,则返回空字符串。
os.getcwd()获取当前工作目录的路径。当前工作目录是程序运行时所在的目录。

为什么是自动化构建项目结构样式

基于以下的好处和作用,读者朋友又有什么理由会拒绝这份宝藏代码呢!!!

好处

通过使用自动生成项目结构文字样式的工具,可以轻松地生成项目的目录结构,并将其插入到README.md文件中。好处如下:

  1. 节省时间和精力:手动编写和更新项目结构的文字样式可能会很耗时且容易出错。自动生成工具可以快速而准确地生成项目结构,节省了手动处理的时间和精力。
  2. 保持一致性:自动生成工具可以确保项目结构的文字样式始终保持一致。无论项目如何演变和更新,都可以轻松地更新项目结构,以反映最新的变化,而无需手动更改README.md文件。
  3. 易于维护:通过自动生成工具生成的项目结构文字样式,可以更容易地进行维护和更新。当项目的文件或目录发生变化时,只需重新运行自动生成工具,即可更新README.md中的项目结构,而无需手动修改和调整。
  4. 提供清晰的项目导航:包含项目结构的文字样式可以让读者快速了解项目的组织方式和文件结构。这对于新加入的开发人员或用户来说尤为重要,他们可以迅速找到所需的文件和模块,并理解它们之间的关系。

综上所述,通过自动生成项目结构文字样式,可以简化编写README.md的过程,提高文档的一致性和可维护性,并为项目的使用者提供清晰的导航和理解。这样的工具可以帮助开发者更专注于项目的开发和功能实现,而不必过多关注文档的细节和更新。

作用

自动化构建项目结构样式在 Python 项目中具有以下作用:

  1. 项目文档:生成项目结构的文字样式可以作为项目文档的一部分,提供项目的概览和文件组织结构的信息。它可以帮助新加入的开发人员快速了解项目的组织和文件分布。
  2. 代码说明:项目结构文字样式可以与代码注释一起使用,对各个模块、包和文件进行说明。这有助于其他开发人员更好地理解代码的组织方式,快速找到所需的文件和模块。
  3. 项目展示:在项目演示或展示的过程中,使用项目结构文字样式可以直观地展示项目的文件和文件夹结构。这样可以帮助观众更好地理解项目的组织方式,并对项目的规模和复杂度有一个直观的认识。

总之,生成项目结构的文字样式可以在项目文档、代码说明和项目展示中提供清晰的项目结构信息,帮助开发人员更好地理解和使用项目。

代码

  • 递归地遍历指定目录下的文件和文件夹,并按照特定的格式输出它们的结构。
# -*- coding: utf-8 -*-
# @Author : Frica01
# @Time   : 2023-06-22 0:00
# @Name   : project_structure_generator.pyimport os# 需要排除的文件夹列表
exclude_folders = ['.git', '.idea', '.vscode', 'venv', '__pycache__', 'project_structure_generator.py']def generate_project_structure(directory, indent='', is_last=False, is_root=False, output_file=None):"""生成项目结构的文字样式Args:directory (str): 目录路径indent (str): 缩进字符串is_last (bool): 是否是最后一个元素is_root (bool): 是否是根目录output_file (file): 输出文件对象Returns:None"""# 获取目录中的文件和文件夹列表,并按照一定的规则排序items = sorted(os.listdir(directory),key=lambda x: (not os.path.isdir(os.path.join(directory, x)), x != '__init__.py', x))num_items = len(items)if is_root:# 根目录名称output_file.write(f"{os.path.basename(os.getcwd())}/\n")for i, item in enumerate(items):if item in exclude_folders:continueitem_path = os.path.join(directory, item)is_item_last = i == num_items - 1if os.path.isdir(item_path):# 如果是目录,则添加目录标记并递归生成目录结构marker = '└── ' if is_item_last else '├── 'output_file.write(f"{indent}{marker}{item}/\n")new_indent = indent + ('    ' if is_last else '│   ')generate_project_structure(item_path, new_indent, is_item_last, output_file=output_file)else:# 如果是文件,则添加文件标记marker = '└── ' if is_item_last else '├── 'output_file.write(f"{indent}{marker}{item}\n")if __name__ == '__main__':# 打开要写入的文件with open('project_structure.txt', 'w') as file:# 生成项目结构并写入文件generate_project_structure('.', is_root=True, output_file=file)print("目录结构已写入文件 project_structure.txt")

结语

在项目开发过程中,一个良好的项目结构对于团队的协作和代码的可维护性起着重要作用。通过使用自动生成项目结构文字样式的工具,如我们在代码中实现的 project_structure_generator.py,我们可以轻松地生成项目结构的可视化表示,并将其整理为一个文本文件。这个工具不仅节省了手动编写项目结构的麻烦,还确保了结构的一致性和准确性。

先这样。


http://www.ppmy.cn/news/516353.html

相关文章

基于spss的多元统计分析 之 因子分析(4/8)

实验目的: 1.掌握因子分析的基本思想; 2.熟悉掌握SPSS软件进行因子分析的基本操作; 3.利用实验指导的实例数据,上机熟悉因子分析方法。 实验内容: 附表的数据来自一次对液晶电视的调…

钱包私钥丢了等于资产归零了?

我想在币圈行走,大家最害怕的可能不是暴跌。 毕竟常在币圈混,大家也都会明白没有短期的跌幅,就不会有长期的涨幅这个道理。 最害怕的可能是私钥忘了吧。 要知道去中心化的钱包私钥忘了就可以说是资产归零了。 对于我这种常年忘记密码的人&…

硬件钱包亮相、支付宝低调内测,数字人民币离普及应用越来越近了

随着全国多地相继开展数字人民币试点工作,数字人民币正在“飞入寻常百姓家”,测试的场景范围也变得越来越丰富,不断地渗入我们的日常生活中。 无需借助手机的硬件钱包 数字人民币拥有软件钱包和硬件钱包两种形态,即以手机App形式…

苹果AirTags即将发布,防丢器将迎来大发展

根据著名苹果爆料人Jon Prosser的消息,苹果寻物防丢贴AirTags的渲染设计已经曝光。根据Jon Prosser 透露,苹果很有可能会在即将召开的发布会上推出 AirTags。根据此前的消息,苹果 AirTags 可以用来寻找经常“丢失”的物品,比如钥匙…

BTC钱包(wallet.dat 文件密码与私钥的区别)

https://www.chainnode.com/post/375787 第0章 引言   我在2012年的时候,教我爸爸使用支付宝。对于一个完全没有接触过第三方支付的人来说,要让他接受支付宝是安全可靠的,至少是和银行的安全性相当的,其实非常难。我没有多废话…

可以像微信钱包一样?2020年数字钱包技术重要的进化方向(上)

未来钱包将更加安全接地气 还记得你第一次接触数字货币,第一次使用钱包时的感受吗? 笔者还依稀记得,第一次看到助记词页面呈现在眼前时的感受:“这什么鬼?” 心中大大的黑人问号脸。后来总算是找了张纸,把…

区块链钱包开发架构的简单介绍

随着国内区块链数字货币交易平台的逐步完善,区块链钱包的使用会越来越频繁和重要,在使用区块链钱包时,有几个名词必须深刻理解,不然就有可能造成区块链资产的损失,这几个名词为私钥、助记词、keystore、地址、密码。若…

名词解释第三十二讲:中心化钱包

这里是王团长区块链学院,与最优秀的区块链人一起成长!今天给大家讲讲中心化钱包。 点击观看视频教程:名词解释第三十二讲:中心化钱包 2017年,高晓松发微博说了一个故事,他北大一位学长几年前和另外一个同学…