摘要:在项目开发过程中,一个良好的项目结构对于团队的协作和代码的可
06月28日 08:36
摘要:在项目开发过程中,一个良好的项目结构对于团队的协作和代码的可维护性起着重要作用。通过使用自动生成项目结构文字样式的工具。不仅节省了手动编写项目结构的麻烦,还确保了结构的一致性和准确性。
本文分享自华为云社区《【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.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: 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元开发者礼包!
欢迎关注 “华为云开发者联盟” 公众号,获取大会议程、精彩活动和前沿干货。
点击关注,第一时间了解华为云新鲜技术~
关键词:
摘要:在项目开发过程中,一个良好的项目结构对于团队的协作和代码的可
06月28日 08:36
6月27日,胡锡进宣布自己开了一个股票账户,正式进入中国股市。6月27日
06月28日 08:38
南方财经全媒体记者田静横琴报道6月27日,横琴“澳门新街坊”揭牌仪式
06月28日 08:44
电视剧行业市场到底怎么样?电视剧以ToB预售模式为主,在制作初期便与视
06月28日 08:42
1、rebootsystemnow_百度翻译rebootsystemnow英[ri:ˈbu:tˈsistəmnau]美[riˈbut
06月28日 08:35
观点香港网讯:6月27日,今年3月,佳兆业成功补发业绩,达成指引而复牌
06月28日 08:45
单片机入门之数码管时钟-在之前的文章中我们学习了多位数码管的倒计时
06月28日 08:47
网约车行业陷入内卷,谁的错?,内卷,滴滴,司乘,网约车平台
06月28日 08:45
6月27日,深市两家上市房企福星股份和中交地产的再融资项目正式拿到了
06月28日 08:40
“成功到达指定位置!”6月27日上午11时许,随着对讲机传出令人激动的
06月28日 08:34
1、confident[英][ˈkɒnfɪdənt][美][ˈkɑ:nfɪdənt]adj 确信的,深信的;有信心的,
06月28日 08:35
中国民航网通讯员康静报道:海南航空北京—爱丁堡HU407直飞航班于6月26
06月28日 08:49
历史上三个精神分裂症皇帝,两个是开国皇帝!,历史上三个精神分裂症皇
06月28日 08:46
第一时间提供各大券商研究所报告,最大程度减少个人投资者与机构之间信
06月28日 08:43
陈建州发律师声明否认性骚扰,陈建州为什么叫黑人?
06月28日 08:42
1、接案和委托犯罪嫌疑人自被公安机关或检察院反贪局第一次讯问或者采
06月28日 08:33
6月27日消息,江苏苏州。一辆白色轿车近日早晨5点在马路上漂移,附近住
06月28日 08:26
1、SETUP exe就是一个可执行的安装文件。2、你可以双击就可以进行安装
06月28日 08:32
随着消费者对于生活品质追求的逐步提高,其对于居家环境也提出了更高的
06月28日 08:37
近日,湖南长沙机场,一名男子突然晕倒。医学生潘乃凡和康嘉恰好路过,
06月28日 08:31
近日,国家金融监督管理总局披露的罚单显示,北京银行因小微企业划型不
06月28日 08:29
1、公元1世纪,基督教起源于巴勒斯坦,相传为犹太的拿撒勒人耶稣所创立,
06月28日 08:27
美联社报道称,堪萨斯城警方在一份新闻稿中说,当地时间25日4时30分许
06月28日 08:46
1、《完美先生与差不多小姐》是已完结的一部爱情类网络小说。2、作者是
06月28日 08:28
证券时报网讯,工信部网站消息,2023年6月20—22日,联合国世界车辆法
06月28日 08:27
星座信仰自古以来,一直被认为是人类对自然规律的探讨和理解。而星座不
06月28日 08:31
中国国民党2024参选人、新北市长侯友宜民调持续落居“老三”,引发蓝营
06月28日 08:40
A、你最近的运气不错,你的性格很开朗,给人的感觉很亲切,和你在一起
06月28日 08:38
证券时报·数据宝统计,截至上午10:29分,上证综指3163 32点,涨跌幅0
06月28日 08:23
题:调查报告:中国公众普遍具备较强环境行为意愿中新财经记者
06月28日 08:40