ToB企服应用市场:ToB评测及商务社交产业平台

标题: Python开发中自动化构建项目结构样式 [打印本页]

作者: 泉缘泉    时间: 2023-6-27 15:39
标题: Python开发中自动化构建项目结构样式
摘要:在项目开发过程中,一个良好的项目结构对于团队的协作和代码的可维护性起着重要作用。通过使用自动生成项目结构文字样式的工具。不仅节省了手动编写项目结构的麻烦,还确保了结构的一致性和准确性。
本文分享自华为云社区《【Python】自动化构建项目结构样式》,作者: frica01。
引言

在使用 Python 或者其它编程语言的项目时候,编写 README.md 往往是不可或缺的;
而在 README.md 中,关于项目结构的样式展示,这个是可选的。不展示也无伤大雅,但有展示的话,有以下优点:
但是怎么去编写这个项目结构的样式,却很令人头疼。
手动编写和更新这些结构可能会变得很繁琐和容易出错。因此,有自动生成项目结构文字样式的工具或脚本可以极大地简化这个过程,提高效率并减少错误。
所以本文就是来解决这一痛点!!!
展示

应该没有人不心动吧!!!
下面使用笔者的一个 PySide6/PyQT 开发的一个项目的项目结构来作展示。
一个Python写的游戏辅助小工具。适用于 咸鱼之王后台挂机、鼠标连击等。
看以下动图展示:

再来看下面的截图
知识点

安装依赖
导入模块
  1. import os
复制代码
主要使用到了 os 模块的几个方法,如下(它们在处理文件和目录时非常有用,可以帮助你进行路径操作和文件系统操作):
使用这些函数可以更方便地处理文件路径和目录操作。
为什么是自动化构建项目结构样式

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

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

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

递归地遍历指定目录下的文件和文件夹,并按照特定的格式输出它们的结构。
  1. # -*- coding: utf-8 -*-
  2. # @Author : Frica01
  3. # @Time   : 2023-06-22 0:00
  4. # @Name   : project_structure_generator.py
  5. import os
  6. # 需要排除的文件夹列表
  7. exclude_folders = ['.git', '.idea', '.vscode', 'venv', '__pycache__', 'project_structure_generator.py']
  8. def generate_project_structure(directory, indent='', is_last=False, is_root=False, output_file=None):
  9. """
  10. 生成项目结构的文字样式
  11. Args:
  12.         directory (str): 目录路径
  13.         indent (str): 缩进字符串
  14. is_last (bool): 是否是最后一个元素
  15. is_root (bool): 是否是根目录
  16. output_file (file): 输出文件对象
  17.     Returns:
  18.         None
  19.     """
  20. # 获取目录中的文件和文件夹列表,并按照一定的规则排序
  21.     items = sorted(os.listdir(directory),
  22.                    key=lambda x: (not os.path.isdir(os.path.join(directory, x)), x != '__init__.py', x))
  23. num_items = len(items)
  24. if is_root:
  25. # 根目录名称
  26. output_file.write(f"{os.path.basename(os.getcwd())}/\n")
  27. for i, item in enumerate(items):
  28. if item in exclude_folders:
  29. continue
  30. item_path = os.path.join(directory, item)
  31. is_item_last = i == num_items - 1
  32. if os.path.isdir(item_path):
  33. # 如果是目录,则添加目录标记并递归生成目录结构
  34.             marker = '└── ' if is_item_last else '├── '
  35. output_file.write(f"{indent}{marker}{item}/\n")
  36. new_indent = indent + ('    ' if is_last else '│   ')
  37. generate_project_structure(item_path, new_indent, is_item_last, output_file=output_file)
  38. else:
  39. # 如果是文件,则添加文件标记
  40.             marker = '└── ' if is_item_last else '├── '
  41. output_file.write(f"{indent}{marker}{item}\n")
  42. if __name__ == '__main__':
  43. # 打开要写入的文件
  44. with open('project_structure.txt', 'w') as file:
  45. # 生成项目结构并写入文件
  46. generate_project_structure('.', is_root=True, output_file=file)
  47. 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元开发者礼包!
欢迎关注 “华为云开发者联盟” 公众号,获取大会议程、精彩活动和前沿干货。
 
点击关注,第一时间了解华为云新鲜技术~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4