Python课程回顾(day17)
一、开发目录
在从我们开始学的编写一个个小的功能,到现在学的模块与包,我们就不再去使用那种面条版的代码去写程序了,现在我们再去编写某个功能或程序时,就要使用到文件及文件夹了,那么对于我们的文件及文件夹有没有什么规范呢?
1.开发目录规范
既然是分文件,那我们肯定是要有规律的去分文件,哪些的同类型的就将他们放在一起
例1:我们之前编写的程序都要与文件交互,而这些文件都是固定的,
所以我们将此类设置的信息可以统一定义一个变量并存放于某个文件夹中,
需要用到的时候直接导入调用即可
例2:还有我们之前学过的用户认证装饰器
用户认证是要套在很多具体功能上的,比如购物、支付、以及一些相关的ATM操作
那么我们以后的装饰器越来越多的话就需要用到一个公共的文件夹,具体的功能需要用到的话也可以直接导入调用
总的来说根据我们之前学过的面向过程编程,可以根据自己的需求使用文件夹,我们大致的ATM+购物车需要用到的文件夹如下:
bin (执行文件)
start.py
core (具体功能)
shopping.py
ATM.py
conf (设置类信息)
settings,py
lib (其他功能需要用到的公共功能)
common
db (记录用户信息)
userinfo.txt
log (ATM日志)
log.txt
readme (程序介绍.txt)
这里我们可能会有一个疑惑,那就是这些文件夹到底是不是包呢?其实我们之前学包的时候都知道,文件夹内含有__init__.py文件的就是包,那我们这里为什么不使用包呢?
首先我们应该明确一个目标,包是一个文件夹是不能直接被导入的,我们所导入的都是是__init__文件,而这个文件其实就是将包内的模块集合到一起,我们再回过头来看,我们上面所写的这些文件夹有没有要将文件夹内的模块全部用到的需求:
bin (bin作为一个执行文件)
core (业务逻辑,即我们的具体功能,在这个文件夹内的所有功能都是相互调用的关系,不需要集中到一个模块内给外面使用)
conf (配置文件,在以后我们开发的项目中,不可能是只有一个配置文件的,比如mysql与oracle,这两种不是一类的文件,若全部集中到一个模块内则会引起极大不便)
lib (基本用于我们的装饰器,更准确的说是公共功能,我们以后下载的第三方模块也是要放到这个文件夹下的,使用哪个导入哪个即可,不需要全部集中)
db与log只是一个简单的txt文本文件基本可以忽略。
二、常用模块
一、
import time 1.time.time() time.time() # 时间戳(从1970-1-1到现在的秒数,我们之前学到过的计时用到的就是这个功能) 2.time.strftime() time.strftime('%Y-%m-%d %H:%M:%S %p') # 年-月-日-时-分-秒-AM-PM time.strftime('%Y-%m-%d %X %p') # 年-月-日-时-分-秒可简化成大X print(time.strftime('%Y-%m-%d %X %p')) # 格式化的字符串时间(多用于人类使用) 3.struct_time # 结构化时间 print(time.localtime()) # 将具体的年月日时分秒分别赋值给了相应的变量(东八区),可以单独求出 4.time.gmtime() print(time.gmtime()) # UTC(世界标准时区),比东八区慢8小时 需要了解的知识点 print(time.localtime(111111111)) # 可以将括号内的秒数转成结构化时间 print(time.gmtime(1111111111)) # 可以将括号内的秒数转化为世界标准时区(以结构化形式) print(time.mktime(time.localtime())) # 将括号内的结构化时间转换成时间戳 print(time.strftime('%m', time.localtime())) # 括号内可传两个参数,一个是格式,一个是结构化时间(可单独只取某一个年月日时分秒) print(time.strptime('2018/10/15', '%Y/%m/%d')) # 将字符串时间类型转换为结构化类型,两个参数格式要一样 在Linux与Mac上经常见到的时间 time.asctime() # 可将括号内的结构化时间转换为strftime格式(基于Linux与Mac) time.ctime() # 可将括号内的具体秒数转换为strftime格式(基于Linux与Mac)
二、 import datetime 1. print(datetime.datetime.now()) # 不需要指定格式也可以打印出具体的字符串时间 2. print(datetime.datetime.now() + datetime.timedelta(days=3)) 可查看三天后的时间(可选择周,天,时,分,秒,微妙,毫秒,days为负数时即为查看之前的时间) 3. current_time = datetime.datetime.now() print(current_time.replace(year=2222)) 后边再加.replace可将后边的年月日等等进行替换 4. print(datetime.date.fromtimestamp(1111111111)) 可将fromtimestamp后的参数(时间戳)转换为字符串时间格式,年-月-日,且没有时分秒