在使用Python或者其它编程语言的项目时候,编写README.md
往往是不可或缺的;
而在README.md
中,关于项目结构的样式展示,这个是可选的。不展示也无伤大雅,但有展示的话,有以下优点:
但是怎么去编写这个项目结构的样式,却很令人头疼。
手动编写和更新这些结构可能会变得很繁琐和容易出错。因此,有自动生成项目结构文字样式的工具或脚本可以极大地简化这个过程,提高效率并减少错误。
所以本文就是来解决这一痛点!!!
应该没有人不心动吧!!!
下面使用笔者的一个PySide6/PyQT开发的一个项目的项目结构来作展示。
一个Python写的游戏辅助小工具。适用于 咸鱼之王后台挂机、鼠标连击等。
看以下动图展示:
再来看下面的截图,
模块 | 作用 |
---|---|
os | os 模块提供了非常丰富的方法用来处理文件和目录 |
安装依赖
导入模块
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
文件中。好处如下:
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
,我们可以轻松地生成项目结构的可视化表示,并将其整理为一个文本文件。这个工具不仅节省了手动编写项目结构的麻烦,还确保了结构的一致性和准确性。
先这样。