Python开发中自动化构建项目结构样式
摘要:在项目开发过程中,一个良好的项目结构对于团队的协作和代码的可维护性起着重要作用。通过使用自动生成项目结构文字样式的工具。不仅节省了手动编写项目结构的麻烦,还确保了结构的一致性和准确性。
本文分享自华为云社区《【Python】自动化构建项目结构样式》,作者: frica01。
引言
在使用Python或者其它编程语言的项目时候,编写README.md 往往是不可或缺的;
而在README.md 中,关于项目结构的样式展示,这个是可选的。不展示也无伤大雅,但有展示的话,有以下优点:
- 提供清晰的项目导航:包含项目结构的文字样式可以让读者快速了解项目的组织方式和文件结构。这对于新加入的开发人员或用户来说尤为重要,他们可以迅速找到所需的文件和模块,并理解它们之间的关系。
但是怎么去编写这个项目结构的样式,却很令人头疼。
手动编写和更新这些结构可能会变得很繁琐和容易出错。因此,有自动生成项目结构文字样式的工具或脚本可以极大地简化这个过程,提高效率并减少错误。
所以本文就是来解决这一痛点!!!
展示
应该没有人不心动吧!!!
下面使用笔者的一个PySide6/PyQT开发的一个项目的项目结构来作展示。
一个Python写的游戏辅助小工具。适用于 咸鱼之王后台挂机、鼠标连击等。
看以下动图展示:
再来看下面的截图
知识点
安装依赖
- 免安装,Python内置
导入模块
import os
主要使用到了os 模块的几个方法,如下(它们在处理文件和目录时非常有用,可以帮助你进行路径操作和文件系统操作):
使用这些函数可以更方便地处理文件路径和目录操作。
- os.path.join用于安全地连接路径
- os.path.isdir用于检查路径是否为目录
- os.path.basename用于提取路径的最后一部分
- os.getcwd用于获取当前工作目录。
为什么是自动化构建项目结构样式
基于以下的好处和作用,读者朋友又有什么理由会拒绝这份宝藏代码呢!!!
好处
通过使用自动生成项目结构文字样式的工具,可以轻松地生成项目的目录结构,并将其插入到README.md文件中。好处如下:
- 节省时间和精力:手动编写和更新项目结构的文字样式可能会很耗时且容易出错。自动生成工具可以快速而准确地生成项目结构,节省了手动处理的时间和精力。
- 保持一致性:自动生成工具可以确保项目结构的文字样式始终保持一致。无论项目如何演变和更新,都可以轻松地更新项目结构,以反映最新的变化,而无需手动更改README.md文件。
- 易于维护:通过自动生成工具生成的项目结构文字样式,可以更容易地进行维护和更新。当项目的文件或目录发生变化时,只需重新运行自动生成工具,即可更新README.md中的项目结构,而无需手动修改和调整。
- 提供清晰的项目导航:包含项目结构的文字样式可以让读者快速了解项目的组织方式和文件结构。这对于新加入的开发人员或用户来说尤为重要,他们可以迅速找到所需的文件和模块,并理解它们之间的关系。
综上所述,通过自动生成项目结构文字样式,可以简化编写README.md的过程,提高文档的一致性和可维护性,并为项目的使用者提供清晰的导航和理解。这样的工具可以帮助开发者更专注于项目的开发和功能实现,而不必过多关注文档的细节和更新。
作用
自动化构建项目结构样式在 Python 项目中具有以下作用:
- 项目文档:生成项目结构的文字样式可以作为项目文档的一部分,提供项目的概览和文件组织结构的信息。它可以帮助新加入的开发人员快速了解项目的组织和文件分布。
- 代码说明:项目结构文字样式可以与代码注释一起使用,对各个模块、包和文件进行说明。这有助于其他开发人员更好地理解代码的组织方式,快速找到所需的文件和模块。
- 项目展示:在项目演示或展示的过程中,使用项目结构文字样式可以直观地展示项目的文件和文件夹结构。这样可以帮助观众更好地理解项目的组织方式,并对项目的规模和复杂度有一个直观的认识。
总之,生成项目结构的文字样式可以在项目文档、代码说明和项目展示中提供清晰的项目结构信息,帮助开发人员更好地理解和使用项目。
代码
递归地遍历指定目录下的文件和文件夹,并按照特定的格式输出它们的结构。
# -*- coding: utf-8 -*- # @Author : Frica01 # @Time : 2023-06-22 0:00 # @Name : project_structure_generator.py import 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: continue item_path = os.path.join(directory, item) is_item_last = i == num_items - 1 if 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,我们可以轻松地生成项目结构的可视化表示,并将其整理为一个文本文件。这个工具不仅节省了手动编写项目结构的麻烦,还确保了结构的一致性和准确性。
号外
7月7日,华为开发者大会2023 ( Cloud )将拉开帷幕,并将在国内30多个城市、海外10多个国家开设分会场,诚邀您参加这场不容错过的年度开发者盛会,让我们一起开启探索之旅!
我们将携手开发者、客户、合作伙伴,为您呈现华为云系列产品服务与丰富的创新实践,并与您探讨AI、大数据、数据库、PaaS、aPaaS、媒体服务、云原生、安全、物联网、区块链、开源等技术话题,展开全面深入的交流。
大会将汇聚全球科学家、行业领袖、技术专家、社区大咖,开设200多场开发者专题活动,为全球开发者提供面对面交流与合作的机会,共同探讨技术创新和业务发展。
大会官网:https://developer.huaweicloud.com/HDC.Cloud2023.html
参会购票:https://www.vmall.com/product/10086352254099.html?cid= 211761
点击参与开发者社区活动,观赏技术大咖秀、玩转技术梦工厂,有机会赢取4000元开发者礼包!
欢迎关注“华为云开发者联盟”公众号,获取大会议程、精彩活动和前沿干货。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
实践讲解强化学习之梯度策略、添加基线、优势函数、动作分配合适的分数
摘要:本文将从实践案例角度为大家解读强化学习中的梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)。 本文分享自华为云社区《强化学习从基础到进阶-案例与实践[5]:梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)》,作者: 汀丶。 1 策略梯度算法 如图 5.1 所示,强化学习有 3 个组成部分:演员(actor)、环境和奖励函数。智能体玩视频游戏时,演员负责操控游戏的摇杆, 比如向左、向右、开火等操作;环境就是游戏的主机,负责控制游戏的画面、负责控制怪兽的移动等;奖励函数就是当我们做什么事情、发生什么状况的时候,可以得到多少分数, 比如打败一只怪兽得到 20 分等。同样的概念用在围棋上也是一样的,演员就是 Alpha Go,它要决定棋子落在哪一个位置;环境就是对手;奖励函数就是围棋的规则,赢就是得一分,输就是负一分。在强化学习里,环境与奖励函数不是我们可以控制的,它们是在开始学习之前给定的。我们唯一需要做的就是调整演员里面的策略,使得演员可以得到最大的奖励。演员里面的策略决定了演员的动作,即给定一个输入,它会输出演...
- 下一篇
Intellij IDEA 插件开发 | 京东云技术团队
写在前面 很多idea插件文档更多的是介绍如何创建一个简单的idea插件,本篇文章从开发环境、demo、生态组件、添加依赖包、源码解读、网络请求、渲染数据、页面交互等方面介绍,是一篇能够满足基本的插件开发工程要求的文章。 如有疏漏欢迎指正,如想深入了解欢迎探讨。 一、简介 IntelliJ IDEA 与 IntelliJ Platform IntelliJ IDEA 简称 IDEA,是 Jetbrains 公司旗下的一款 JAVA 开发工具,支持 Java、Scala、Groovy 等语言的开发,同时具备支持目前主流的技术和框架,擅长于企业应用、移动应用和 Web 应用的开发,提供了丰富的功能,智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等。 IntelliJ Platform 是一个构建 IDE 的开源平台,基于它构建的 IDE 有 IntelliJ IDEA、WebStorm、DataGrip、以及 Android Studio 等等。IDEA 插件也是基于 IntelliJ Platform...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- MySQL8.0.19开启GTID主从同步CentOS8
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装Docker,最新的服务器搭配容器使用
- Hadoop3单机部署,实现最简伪集群
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Linux系统CentOS6、CentOS7手动修改IP地址