Python的软件开发目录规范

软件开发的目录规范:

  为了提高程序的可读性与可维护性,我们应该为软件设计良好的目录结构,这与规范的编码风格同等重要。软件的目录规范并无硬性标准,只要清晰可读即可,假设你的软件名为foo,笔者推荐目录结构如下

Foo/
|-- core/
|   |-- core.py
|
|-- api/
|   |-- api.py
|
|-- db/
|   |-- db_handle.py
|
|-- lib/
|   |-- common.py
|
|-- conf/
|   |-- settings.py
|
|-- run.py
|-- setup.py
|-- requirements.txt
|-- README

解释一下:

? • core/: 存放业务逻辑相关代码

? • api/: 存放接口文件,接口主要用于为业务逻辑提供数据操作。

? • db/: 存放操作数据库相关文件,主要用于与数据库交互

? • lib/: 存放程序中常用的自定义模块

? • conf/: 存放配置文件

? • run.py: 程序的启动文件,一般放在项目的根目录下,因为在运行时会默认将运行文件所在的文件夹作为sys.path的第一个路径,这样就省去了处理环境变量的步骤

? • setup.py: 安装、部署、打包的脚本。

? • requirements.txt: 存放软件依赖的外部Python包列表。

? • README: 项目说明文件。

除此之外,有一些方案给出了更加多的内容,比如LICENSE.txt,ChangeLog.txt文件等,主要是在项目需要开源时才会用到,请读者自行查阅。

关于README的内容,这个应该是每个项目都应该有的一个文件,目的是能简要描述该项目的信息,让读者快速了解这个项目。它需要说明以下几个事项:

1、软件定位,软件的基本功能;

2、运行代码的方法: 安装环境、启动命令等;

3、简要的使用说明;

4、代码目录结构说明,更详细点可以说明软件的基本原理;

5、常见问题说明。

举例说明:数据准备如下

# src.py存放源码

# encoding=utf-8
# auther:lsj

def exit():
    print("退出功能")

def login():
    print("登录功能")

def register():
    print(‘注册功能‘)

def witdraw():
    print(‘体现功能‘)

def transfer():
    print("转账功能")

func_dic={
    ‘0‘:[‘退出‘,exit],
    ‘1‘:[‘登录‘,login],
    ‘2‘:[‘注册‘,register],
    ‘3‘:[‘体现‘,witdraw],
    ‘4‘:[‘转账‘,transfer],
}
def run():
    while True:
        for k in func_dic:
            print(k,func_dic[k][0])

        choice = input("请输入指令编号:").strip()
        if choice in func_dic:
            func_dic[choice][1]()
        else:
            print("请重新输入")

# run()
# start.py存放执行程序

# encoding=utf-8
# auther:lsj

# 使用相对导入:参照当前所在文件夹
# from ..core.src import run
# run()
# ImportError: attempted relative import with no known parent package
# 执行文件超出了查找范围。

# 应该采用绝对导入-->sys.path-->执行文件
# import sys
# sys.path.append(r‘D:\pycharm\oldboy_29\day021\ATM\core‘)
# import src
# src.run()

# 考虑问题:我们目前把路径写死了
# import sys
# sys.path.append(r‘D:\pycharm\oldboy_29\day021\ATM\core‘)
# sys.path.append(r‘D:\pycharm\oldboy_29\day021\ATM\lib‘)
# sys.path.append(r‘D:\pycharm\oldboy_29\day021\ATM\db‘)
# sys.path.append(r‘D:\pycharm\oldboy_29\day021\ATM\conf‘)
#
# import src
# src.run()

# 查看路径都是重复的,我们进行优化:把环境的顶级目录加入到环境变量
# import sys
# sys.path.append(r‘D:\pycharm\oldboy_29\day021\ATM‘)

# from conf import settings
# from core import src
# from db import db_handle
# from lib import common

# print(settings)
# print(src)
# <module ‘conf.settings‘ from ‘D:\\pycharm\\oldboy_29\\day021\\ATM\\conf\\settings.py‘>
# <module ‘core.src‘ from ‘D:\\pycharm\\oldboy_29\\day021\\ATM\\core\\src.py‘>

# from core import src
# src.run()

# 不加任何前缀直接运行run(),优化如下
# from core.src import run
# run()

# 优化一
# import sys
# print(__file__)  # 获取当前文件的绝对路径:运行结果D:/pycharm/oldboy_29/day021/ATM/bin/start.py
# # sys.path.append(r‘D:\pycharm\oldboy_29\day021\ATM‘)

import os
# print(__file__)  # 获取当前文件的绝对路径,D:/pycharm/oldboy_29/day021/ATM/bin/start.py
# print(os.path.dirname(__file__))  # 获取当前文件的绝对路径的上一个文件,D:/pycharm/oldboy_29/day021/ATM/bin
# print(os.path.dirname(os.path.dirname(__file__)))  # D:/pycharm/oldboy_29/day021/ATM
# # sys.path.append(r‘D:\pycharm\oldboy_29\day021\ATM‘)

# 优化二
import os,sys
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
sys.path.append(BASE_DIR)

from core import src

src.run()

"""运行结果如下
0 退出
1 登录
2 注册
3 体现
4 转账
请输入指令编号:
"""
# commonpy文件的代码
import time
from conf import settings
def logger(msg):
    # 日志记录功能
    with open(settings.LOG_PATH,
              mode=‘at‘,
              encoding=‘utf-8‘
              ) as f:
        f.write(‘%s %s\n‘%(time.strftime(‘%Y-%m-%d %H:%M:%S‘),msg))

# 日志路径不能写死,你要给用户选择自定义的保存位置,去settings里面设置
# settings.py文件

from core import src

# 这里的路径写死了,我们优化一下
# LOG_PATH = r‘D:\pycharm\oldboy_29\day021\ATM\log\user.log‘

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
LOG_PATH = r‘%s/log/user.log‘ %BASE_DIR

原文地址:https://www.cnblogs.com/liunaixu/p/12699616.html

时间: 2024-10-07 00:10:11

Python的软件开发目录规范的相关文章

Python学习————软件开发目录规范

软件开发目录规范 为了提高程序的可读性与可维护性,我们应该为软件设计良好的目录结构,这与规范的编码风格同等重要.软件的目录规范并无硬性标准,只要清晰可读即可,假设你的软件名为foo,笔者推荐目录结构如下 Foo/ |-- core/ | |-- core.py | |-- api/ | |-- api.py | |-- db/ | |-- db_handle.py | |-- lib/ | |-- common.py | |-- conf/ | |-- settings.py | |-- run

Python模块:Re模块、附软件开发目录规范

Re模块:(正则表达式) 正则表达式就是字符串的匹配规则 正则表达式在多数编程语言里都有相应的支持,Python里面对应的模块时re 常用的表达式规则:(都需要记住) " . "   #  默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 " ^ "  #  匹配字符开头,若指定flags MULTILINE,这种也可以匹配上("^a","\nabc\neee",flags=re.MUL

软件开发目录规范

为什么要设计好目录结构? "设计项目目录结构",就和"代码编码风格"一样,属于个人风格问题.对于这种风格上的规范,一直都存在两种态度: 一类同学认为,这种个人风格问题"无关紧要".理由是能让程序work就好,风格问题根本不是问题. 另一类同学认为,规范化能更好的控制程序结构,让程序具有更高的可读性. 我是比较偏向于后者的,因为我是前一类同学思想行为下的直接受害者.我曾经维护过一个非常不好读的项目,其实现的逻辑并不复杂,但是却耗费了我非常长的时间去

模块的使用,软件开发目录规范

一.模块 1.定义:就是一系列功能的结合体 2.模块的三种来源: ①.内置的(Python解释器自带) ②.第三方的(别人写的) ③.自定义的(你自己写的) 3.模块的四种表现形式 ①.使用Python编写的py文件(也就意味着py文件也可以称之为模块:一个py文件也可以称之为一个模块) ②.已被编译为共享库或DLL的c或c++扩展(了解) ③.把一系列模块组织到一起的文件夹(文件夹下有一个__init__.py文件,改文件称之为包) ④.使用c编写并连接到Python解释器的内置模块 4.使用

模块 导入方式 软件开发目录规范

1.模块 模块是一系列功能的结构体 模块的三种来源:内置,第三方,自定义 模块的四种表现形式: 用python编写的py文件 已被编译为共享库或DLL的C或C++扩展(了解) 将一系列模块组织到一起的文件夹 使用C编写并连接到python解释器的内置模块 模块极大的提高了开发效率(内置,第三方),当程序比较庞大时,一个项目的程序拆分多个py文件,将公共用到的方法写到一个py文件,其他文件以模块的形式调用 知道哪个是执行文件,哪个是导入文件. import导入模块 在运行执行文件时,会创建一个执行

08-03 开发软件的目录规范

软件开发目录规范 为了提高程序的可读性与可维护性,我们应该为软件设计良好的目录结构,这与规范的编码风格同等重要.软件的目录规范并无硬性标准,只要清晰可读即可,假设你的软件名为foo,笔者推荐目录结构如下 Foo/ |-- core/ | |-- core.py | |-- api/ | |-- api.py | |-- db/ | |-- db_handle.py | |-- lib/ | |-- common.py | |-- conf/ | |-- settings.py | |-- run

Python 3 软件开发规范

Python 3 软件开发规范 参考链接 http://www.cnblogs.com/linhaifeng/articles/6379069.html#_label14 对每个目录,文件介绍. 1 #=============>bin目录:存放执行脚本 2 3 #start.py 4 5 import sys,os 6 7 8 9 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 10 11 sys.pat

4 Apr 18 软件开发目录 logging模块的使用 序列化(Json, Pickle) os模块

4 Apr 18 上节课复习:函数在一个程序内被使用,模块可以被几个程序共享使用 一.软件开发目录 confàsettings.py core(主要逻辑)àsrc.py dbàdb.txt lib(库)àcommon.py bin(入口,启动)àstart.py logàaccess.log readme(说明书)   二.logging模块的使用 日志分为五个级别:debug 10, info 20, warning 30, error 40, critical 50 若日志级别设为10,包括

python18 时间模块 系统模块(os,os.path) 项目开发目录规范

复习 '''1.跨文件夹导包 - 不用考虑包的情况下直接导入文件夹(包)下的具体模块 2.__name__: py自执行 '__main__' | py被导入执行 '模块名' 3.包:一系列模块的集合体,通过包内的__init__文件来管理包中所有模块提供给外界的名字 -- 存放所以模块的文件夹名就是包名 4.导包三件事:1)编译__init__文件的pyc2)执行__init__文件形成全局名称空间,作为包的全局名称空间,包能直接使用的名字全部是__init__文件中提供的3)在导包文件中形成