Python之01-ProjectStrucure项目结构


@Author: liuyangly1
@Date : 2021-07-07 19:14:16
@Blog : https://blog.csdn.net/liuyang_1106
@Github: https://github.com/liuyangly1
@Email : 522927317@qq.com


项目结构

1. 项目结构目录

ProjectName
|-- bin/                    # 存放脚本,执行文件
|   |-- projectname
|   |-- script
|
|-- packages/
|   |-- lib1                # 存放库文件
|
|-- configure               # 配置文档
|   |--seetting.py       
|
|-- projectname/            # 存放项目的所有源代码,包括所有模块和包
|   |-- tests/              # 存放单元测试代码
|   |   |-- __init__.py
|   |   |-- test_main.py
|   |
|   |-- __init__.py
|   |-- main.py             # 程序的入口
|
|-- docs/                   # 文档
|   |-- doc1.md
|   |-- doc2.word
|
|-- logs/                   # 日志文件
|   |-- logs.txt
|
|-- setup.py                # 安装、部署、打包的脚本
|-- requirements.txt        # 存放软件依赖的外部Python包列表
|-- README                  # 项目说明文档
  • 开源项目还涉及LICENSE.txt,ChangeLog.txt文件等。
  • 还可以额外添加数据文件夹data等。

2. 项目创建脚本

#!/usr/bin/env/python
# -*- encoding: utf-8 -*-
"""
################################################################################
@File              :   project_structure.py
@Time              :   2021/7/7 19:35:20
@Author            :   liuyangly1
@Email             :   522927317@qq.com
@Desc              :   A python project structure  of creating script.
ProjectName
    |-- bin/                    # 存放脚本,执行文件
    |   |-- projectname
    |
    |-- projectname/            # 存放项目的所有源代码,包括所有模块和包
    |   |-- tests/              # 存放单元测试代码
    |   |   |-- __init__.py
    |   |   |-- test_main.py
    |   |
    |   |-- __init__.py
    |   |-- main.py             # 程序的入口
    |
    |-- docs/                   # 文档
    |   |-- abc.rst
    |
    |-- conf/                   # 配置
    |   |-- settings.py
    |
    |-- logs/                   # 日志
    |   |-- logs.txt
    |
    |-- setup.py                # 安装、部署、打包的脚本
    |-- requirements.txt        # 存放软件依赖的外部Python包列表
    |-- README 
################################################################################
"""
import os
import argparse

def project_structure(project_path, project_name):

    assert not os.path.exists(os.path.join(project_path, project_name)), "Error, project_name exist!"
    # 创建项目目录
    os.makedirs(os.path.join(project_path, project_name))
    # 创建执行目录
    os.mkdir(os.path.join(project_path, project_name, "bin"))
    fp = open(os.path.join(project_path, project_name, "bin", "run"),'w')
    fp.close()
    # 创建源代码目录
    os.mkdir(os.path.join(project_path, project_name, project_name.lower()))
    fp = open(os.path.join(project_path, project_name, project_name.lower(), "__init__.py"),'w')
    fp.close()
    # 创建程序入口文件
    fp = open(os.path.join(project_path, project_name, project_name.lower(), "main.py"),'w')
    fp.close()
	#  创建测试目录
    os.mkdir(os.path.join(project_path, project_name, project_name.lower(), "tests"))

    fp = open(os.path.join(project_path, project_name, project_name.lower(), "tests", "__init__.py"),'w')
    fp.close()
    fp = open(os.path.join(project_path, project_name, project_name.lower(), "tests", "test_main.py"),'w')
    fp.close()
    # 创建文档目录
    os.mkdir(os.path.join(project_path, project_name,"docs"))
    fp = open(os.path.join(project_path, project_name,"docs","conf.py"),'w')
    fp.close()
    # 创建配置文件目录
    os.mkdir(os.path.join(project_path, project_name,"conf"))
    fp = open(os.path.join(project_path, project_name,"conf","settings.py"),'w')
    fp.close()
    # 创建日志目录
    os.mkdir(os.path.join(project_path, project_name,"logs"))
    fp = open(os.path.join(project_path, project_name,"logs","logs.txt"),'w')
    fp.close()
    # 创建setup.py, requirements.txt and README文件
    fp = open(os.path.join(project_path, project_name,"setup.py"),'w')
    fp.close()
    fp = open(os.path.join(project_path, project_name,"requirements.txt"),'w')
    fp.close()
    fp = open(os.path.join(project_path, project_name,"README.md"),'w')
    fp.close()

def parse_args():
    parser = argparse.ArgumentParser(description="A python project structure")
    # 向该对象中添加你要关注的命令行参数和选项
    parser.add_argument("--project_path", type=str, default=".", help='Required parameters')
    parser.add_argument("--project_name", type=str, default="ProjectName", help='Required parameters')
    return parser.parse_args()

def main():
    project_structure(**vars(parse_args()))

if __name__ == "__main__":
    main()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值