python常用模块:项目目录规范、定制程序入口、自定义模块、引用变量、time和datetime模块
本文目录:
一、文件目录规范
二、定制程序入口
三、使用标准目录后
四、常规函数time、datetime
一、标准目录规范
之前用过的案例atm机+购物商城代码过长,在学习了模块和包以后,我们应该分文件和文件夹
案例演示:编写ATM
#file:"start.py"
def login():
#加载文件
with open ("/users/jerry/pycharmprojects/项目结构/db/db.txt") as f:
print(f.read())
def register():
print(“注册)
def run():
while True:
print(
"""请选择
1.登录
2.注册
""")
s = input("请选择:")
if s == "":
login()
elif: s == "":
register()
else:
print("error")
1.在项目中我们经常用到文件路径例如数据和日志文件,不至一个地方要用,直接将路径写在代码中是不可取的,因为有可能会修改这些路径,所以不要直接写在代码中,要定义一个变量,修改的时候只需更改一次
#file:"start.py"
#数据路径
DB_PATH="/users/jerry/pycharmprojects/项目结构/db/db.txt"
#日志路径
LDG_PATH="/users/jerry/pycharmprojects/项目结构/db/log.txt"
def login():
#加载文件
with open("/users/jerry/pycharmprojects/项目结构/db/db.txt")as f:
print(f.read())
def register("注册")
print("注册")
def run():
while True:
print(
"""请选择
1.登录
2.注册
""")
s = input("请选择:")
if s == "":
login()
elif:
s == "":
register()
else:
print("error")
我们要将配置程序的变量和业务逻辑分开,所以我们要给配置信息单独建一个文件
#file:"setting.py
#数据路径
DB_PATH="/users/jerry/pycharmprojects/项目结构/db/db.txt"
#日志路径
LDG_PATH="/users/jerry/pycharmprojects/项目结构/db/log/log.txt"
2.接下来我们要做一个登录验证,由于每个功能都要用验证操作,所以我们为验证功能单独建一个文件
common.py
#登录验证装饰器
def login_auth():
pass
3.另外我们好要有日志log,数据文件db
4.再将程序的业务逻辑和启动代码进行分离,变成start文件和src文件
start.py专门执行启动
src.py中的业务逻辑被start调用
这样用户使用时就能清晰启动文件
5.在项目中可能会有多个执行文件,统一放在bin的文件夹下
最后一个规范的项目目录应包含以下结构:
bin
core
conf
lib
db
log
readme(介绍文件)
二、使用标准目录后
完善程序是可以展示用户功能界面,在src中定义run函数来启动程序,注意src所在的core中可能有多个文件,用户使用不方便,所以我们程序入口从src中转移到start.py中
#file:"start.py"
import core.src
core.src.run()
由于core这个模块中并不存在与环境变量中,所以程序无法运行!
所以要在环境变量中添加core
#file:"start.py"
import sys
sys.path.append(r"c:\\yyh\python\day20\atm\core")
import core.src
core.src.run()
1.程序运行成功,但是也写死了,因为lib和conf就无法使用,所以为了找到所有模块,我们要将ATM文件夹加入环境变量
#file:"start.py"
import sys
sys.path.append(r"c:\\yyh\python\day20\atm")
2.如果用户安装路径不同,程序也无法运行,此时我们需要动态获取当前项目的目录,在一个PY文件中可以使用file来获取当前文件路径,通过当前文件路径获取文件所在的目录,使用os.path.dirname
#file:"start.py"
import sys,os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
sys.path.append(BASE_DIR)
import core.src
core.src.run()
三.使用标准目录后
在上述文件中我们把文件路径定义变量放在setting.py文件中
那么在src中要使用这些变量 就需要导入conf下的setting.py
由于在启动文件start.py中我们已经将项目添加到path中,所以可以直接导入
#file:"src.py"部分代码
#导入配置文件
from comf import setting
def login():
#加载文件 使用配置文件中的路径
with open(setting.DB_PATH) as f:
print(f.read())
def register():
print("注册")
引入自定义模块
为上述案例添加日志功能
#file:"src.py"部分代码
#日志功能
def loggin(msg):
with open("/user/jerry/pycharmprojects/项目结构/log/log.txt") as f:
f.write(msg)
#导入配置文件
from conf import setting
def login():
#加载文件 使用配置文件中的路径
with open(setting.DB_PATH) as f:
print(f.read())
logger("xxx登录系统")
def register():
print("注册")
日志功能并不是只有src文件使用 所以我们将提取单独的模块
在lib下的common中
#file:"src.py"部分代码
#导入配置文件获取 日志路径
from conf import setting
#日志功能
def logger(msg):
with open(setting.LDG_PATH) as f:
f.write(msg)
在src中导入日志模块
#file:"src.py"部分代码
from lib import common
#日志功能
def logger(msg):
with open("/users/jerry/pycharmprojects/项目结构/log/log.txt") as f:
f.write(msg) #导入配置文件
from conf import srtting
def login():
#加载文件 使用配置文件中的路径
with open(setting.DB_path) as f:
print(f.read())
logger("xxx登录系统")
def register():
print("注册")
四、常用模块
1.time模块
import time
#与时间相关的一个模块 #时间的三类
#1.时间戳 从1970-1-1 0:0:0开始到现在的秒数
print(time.time())
t=time.time()
time.sleep(10)
t2=time.time()
print(t2-t) #2.结构化时间
print(time.localtime())#返回是一个对象,其中包含一个元组,里面是每个时间的值(东八区)
print(time.localtime().tm_year)#单独获取某个时间属性
print(time.gmtime())#世界统一时间 比北京时间晚八小时 #3.格式化的字符串时间
print(time.strftime("%Y-%m-%d %H:%M:%S %q"))
print(time.strftime("%Y-%m-%d %x %q")) #三种格式之间的相互转换
#时间戳转为结构化
# print(time.strftime(time.time())) #结构化转字符串
print(time.strftime("%Y-%m-%d",time.localtime(time.time()))) #字符串转结构化
print(time.striptime(time.strptime("2018-10-15","%Y-%m-%d")))
2.datetime 模块
import datetime #这是一个包,里面包含包对时间的处理,对日期的处理
datetime.date #日期相关
datetime.time #时间相关 #获取当前详细时间
print(datetime.datetime.now()) #获取时间的某一部分
t1 = (datetime.datetime.now().hour) #替换时间的某一部分
t1 = datetime.datetime.now()
t1 = t1.replace(year=2019)
print(t1) t2 = datetime.datetime.now()
#print(t1=t2) #了解知识点
#时间差对象
tal = datetime.timedelta(weeks=1) t1 = datetime.datetime.now()
print(t1 + tal)
python常用模块:项目目录规范、定制程序入口、自定义模块、引用变量、time和datetime模块的更多相关文章
- day 14 项目目录规范; time ; logging
import sys print(sys.modules) 程序一运行,解释器将里面的所有内容全部加载到内存 项目目录规范: 代码不可能全部只写在一个文件,十几万行代码,调整,修改都很不方便. 所 ...
- Javascript模块化编程(一)模块的写法最佳实践六、输入全局变量 独立性是模块的重要特点,模块内部最好不与程序的其他部分直接交互。 为了在模块内部调用全局变量,必须显式地将其他变量输入模块。
Javascript模块化编程,已经成为一个迫切的需求.理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块但是,Javascript不是一种模块化编程语言,它不支持类clas ...
- python 之 软件开发目录规范 、logging模块
6.4 软件开发目录规范 软件(例如:ATM)目录应该包含: 文件名 存放 备注 bin start.py,用于起动程序 core src.py,程序核心功能代码 conf settings. ...
- python开发流程及项目目录规范
# 项目开发流程 1.调研 2.需求分析 ---产品经理 3.任务分配 ---项目经理 4.写项目demo ---项目经理.架构师.程序猿 5.架构分析 ---项目经理.架构师 6.编 ...
- Python代码项目目录规范v1.0
程序目录规范:bin # 存放可执行程序 xxxx.py # 程序主程序(入口文件)config # 存放配置信息 settings.py # 全局配置文件(可能暂时未应用)db # 存放数据文件 c ...
- Java Web 项目目录规范
一.项目结构 这里和其他项目区别不大,我将模板抽离出来,更容易分析和理解: 解释一下:js主要包括extends(引入第三方的js).module(项目模块自己的js).lib(引用包,这里也可以继续 ...
- Python开发【项目】:FTP程序
作业:开发一个支持多用户在线的FTP程序 要求: 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp se ...
- Java基础笔记(2) 程序入口 关键字 标识符 常量 变量
提醒:关于那些和我一样新鸟来看资料的,能看懂多少看多少,看不懂的就是不重要,重要的你想我自己学习肯定要标注的,这些信息明白每个知识点实际作用就好了,其他的比如等会讲的常量内存,常量池这些都是我找的资料 ...
- python flask大型项目目录
Hello World 作者背景 应用程序简介 要求 安装 Flask 在 Flask 中的 “Hello, World” 下一步? 模板 回顾 为什么我们需要模板 模板从天而降 模板中控制语句 模板 ...
随机推荐
- MMORPG服务器架构
MMORPG服务器架构 一.摘要 1.网络游戏MMORPG整体服务器框架,包括早期,中期,当前的一些主流架构2.网络游戏网络层,包括网络协议,IO模型,网络框架,消息编码等.3.网络游戏的场景管理,A ...
- 【并行计算-CUDA开发】#pragma unroll伪编译指令的使用
#pragma宏命令主要是改变编译器的编译行为,其他的参数网上资料比较多,我只想简单说下#pragma unroll的用法,因为网上的资料比较少,而且说的比较笼统,请看下面的一段代码 int main ...
- CSS实现网页背景图片自适应全屏,自适应背景图片
一张清晰漂亮的背景图片能给网页加分不少,设计师也经常会给页面的背景使用大图,我们既不想图片因为不同分辨率图片变形,也不希望当在大屏的情况下,背景有一块露白,简而言之,就是实现能自适应屏幕大小又不会变形 ...
- MQTT 简介及协议原理
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种构建于TCP/IP协议上基于发布/订阅(publish/subscribe)模式的“轻量 ...
- Linux用户管理命令介绍
1)管理用户命令总汇 2)管理用户组命令 总汇
- vue组件之间的通信, 父子组件通信,兄弟组件通信
组件通讯包括:父子组件间的通信和兄弟组件间的通信.在组件化系统构建中,组件间通信必不可少的. 父组件--> 子组件 1. 属性设置 父组件关键代码如下: <template> < ...
- windows登录密码忘记了怎么办?
利用PE工具进行进行修改密码或者重置系统密码,正对于服务器也同样试用 目前U启动制作效果还不错,黑鲨一键装机,以及老毛桃我觉得还是算了,U深度也不错 经过这么久,小编也把该测试的测试了,,小编比较懒, ...
- 洛谷P1088 火星人
//其实就是全排列 //我们从外星人给的那串数字往下搜索 //一直往下拓展m次 //最后输出结果 //虽然看起来很暴力,但是题目上说了m非常小 #include<bits/stdc++.h> ...
- 简单Kibana命令
1 查看健康状态 GET _cat/health?v epoch timestamp cluster status node.total node.data shards 1531290005 14: ...
- 牛客 158D a-贝利福斯数
将所有形如ax+1的数称为a-贝利福斯数,其中x是正整数.一个a-贝利福斯数是a-贝利福斯素数,当且仅当它不能被分解成两个a-贝利福斯数的积.现在给出a,n,问有多少个 ≤ n的a-贝利福斯数可以被分 ...