python学习_软件开发的目录规范以及示例代码(解决软件移植的路径问题)

目录结构:

Package
|------bin
    |------start.py
|------conf
    |------settings.py
|------core
    |------src.py
|------db
    |------table.db
|------lib
    |------common.py
|------log
    |------transaction.log
|------README

1.在src中编写核心代码

from lib import common

def shopping():
    print(‘购物‘)

def pay():
    print()
    common.logger(‘XXXXXXXXXX‘)

def transfer():
    print()

def withdraw():
    print(‘提现‘)

func_dic={
    ‘1‘: shopping,
    ‘2‘: pay,
    ‘3‘: transfer,
    ‘4‘: withdraw
}

#让用户选择启动哪个方法
def run():
    while True:
        print("""
        0 退出
        1 购物
        2 支付
        3 转账
        4 提现
        """)
        choice =input(‘请输入您的操作:‘).strip()
        if choice == ‘0‘:break
        if choice not in func_dic:
            print("输入的指令不存在,请重新输入")
            continue
        func_dic[choice]()

2.bin/start为程序启动入口

os.path.dirname(os.path.dirname(__file__))================>动态获取软件的根目录,解决移植问题

import sys
import os
from core import src

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
sys.path.append(BASE_DIR)

if __name__ == ‘__main__‘:
    src.run()

3.conf/settings.py中设置日志路径(以及数据库路径)

同样是动态获取软件的根目录,再拼接到软件日志的指定目录,解决移植问题

import os
BASE_DIR=os.path.dirname(os.path.dirname(__file__))
TRANSACTION_LOG_PATH =os.path.join(BASE_DIR, ‘log‘, ‘transaction.log‘)

4.lib/common.py中放通用的方法

from conf import settings
import time
def logger(msg):
    with open(settings.TRANSACTION_LOG_PATH,‘at‘,encoding=‘utf-8‘) as f:
        f.write(‘%s %s\n‘ %(time.strftime(‘%Y-%m-%d %H:%M:%S‘), msg))

原文地址:https://www.cnblogs.com/cooky/p/9375207.html

时间: 2024-08-04 05:33:56

python学习_软件开发的目录规范以及示例代码(解决软件移植的路径问题)的相关文章

软件开发的目录规范/定制程序的入口/引用配置文件/引用自定义模块/logging模块/日志继承与propagate属性/通过字典导入配置/日志模块在项目中的使用

02.软件开发的目录规范单独的文件放单独的东西py文件src 程序的核心有关setting 配置有关common 常用功能的集合体 文件夹lib 库log 日志conf 配置文件有关的db 数据有关的文件夹bin 整个程序的入口放启动文件core 里面写主逻辑=====================read me 解释说明文件夹里面做什么 原文地址:https://www.cnblogs.com/wangmiaolu/p/8734561.html

python学习之-软件开发的目录规范

通常软件目录下有几个标准文件夹 软件主文件夹命名,通常都是大写(ATM_SHOPPING) ------------------------------------------------------------------------- bin : 启动文件文件夹(整个软件的启动文件) conf : 软件配置文件(软件全局性的一些变量和参数) core :核心逻辑 db :专门放数据相关的文件(比如账号数据等) lib :自定义的模块 log :日志文件 Readme.txt 软件介绍的文本

软件开发的目录规范

在实际开发的过程中,不可能和之前一样将所有的代码都写在一个py文件里,这样会导致程序的可读性,和可移植性变的极差,所以要分目录进行开发. 一般分为几部分: 1.bin:里面放的一般是可执行文件 2.conf:里面一般是放配置文件 3.lib:库,即一些公用的功能 4.core:里面一般是写核心逻辑 5.db:数据处理 6.interface:接口层,连接core和db,实现这两部分的解耦合 7.log:主要是日志相关的信息 原文地址:https://www.cnblogs.com/xiaocao

1.模块2.循环导入问题及解决思路3.区分py文件的两种类型4.模块的查找顺序5.模块的绝对导入与相对导入6.项目开发的目录规范

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

python学习_处理数据编程实例(一)

目的:用一个实例总结学习到的with语句,函数,列表推导,集合,排序,字符分割等内容 要求:分别以james,julie,mikey,sarah四个学生的名字建立文本文件,分别存储各自的成绩,时间格式都精确为分秒,时间越短成绩越好,分别输出每个学生的无重复的前三个最好成绩,且分秒的分隔符要统一为"." 数据准备:分别建立四个文本文件 james.txt     2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22 julie.txt        2

Python学习_列表解析和Lambda表达式

1.根据要求创建列表threes_and_fives(列表值包括1到15中能够被3或者5正常的数) threes_and_fives=[x for x in range(1,16) if x%3==0 or x%5==0] 2.lambda表达式实例(剔除掉列表中的"X") garbled = "IXXX aXXmX aXXXnXoXXXXXtXhXeXXXXrX sXXXXeXcXXXrXeXt mXXeXsXXXsXaXXXXXXgXeX!XX" message

python学习笔记九——文件与目录

1.python进行文件读写的函数是open或file类 mode:r  只读 r+   读写 w  写入,先删除原文件,再重新写入,如果文件没有则创建 w+  读写,先删除原文件,再重新写入,如果文件没有则创建(可写入和输出) a  写入,在文件末尾追加新的内容,文件不存在则创建 a+  读写,在文件末尾追加新的内容,文件不存在则创建 b  打开二进制文件,可与r,w,a,+结合使用 U  支持所有的换行符号,"\r","\n","\r\n"

Python学习_算数运算函数

记录以grades列表为例,分别定义输出.求和.平均值.方差和标准差函数,并输出相应的值 grades = [100, 100, 90, 40, 80, 100, 85, 70, 90, 65, 90, 85, 50.5] #定义输出函数 def print_grades(grades): for grade in grades: print grade #定义求和函数 def grades_sum(grades): total = 0 for grade in grades: total +=

python 学习_第四模块 并发编程(多线程)

python 学习_第四模块 并发编程(多线程) 1  开启线程方式 from threading import Thread import time def say(name): time.sleep(2) print("%s hello"%name) if __name__ =="__main__": t = Thread(target=say,args=("alex",)) t.start() print("主线程")