16.Python略有小成(内置模块Ⅱ)
程序员文章站
2023-08-12 11:46:39
Python(内置模块Ⅱ) 规范化开发 1. 一个py文件中 文件加载问题 代码可读性,查询差 2. 要将一个py文件分开,合理的分成多个py文件 配置文件放在一起 : 一些轻易不改变的变量,一般命名 settings.py 主逻辑函数放在一起 : 一般命名 src.py 辅助功能函数放在一起 : ......
python(内置模块ⅱ)
规范化开发
- 一个py文件中
- 文件加载问题
- 代码可读性,查询差
- 要将一个py文件分开,合理的分成多个py文件
- 配置文件放在一起 : 一些轻易不改变的变量,一般命名 settings.py
- 主逻辑函数放在一起 : 一般命名 src.py
- 辅助功能函数放在一起 : 公共组件部分,装饰器,log日志,一般命名 common.py
- 程序启动开关 : 放在明显位置,便于开启程序,一般命名 starts.py
- 数据库文件 : register文件,文本数据库
- 日志 : log文件
- 文件夹命名规范
- bin 文件夹放启动文件
- conf 放配置文件
- core 放核心文件 主逻辑
- lib 放公共组件文件
- db 放数据库文件
- log 放日志文件
- 外加一个使用说明,readme,此为文件
time模块
-
与实践相关的模块三种形式:
-
时间戳 : time.time 时差,计时.....
通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
-
格式化时间(人类看得懂的时间) : 2019-6-28 12:00
%y 两位数的年份表示(00-99) %y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %h 24小时制小时数(0-23) %i 12小时制小时数(01-12) %m 分钟数(00=59) %s 秒(00-59) %a 本地简化星期名称 %a 本地完整星期名称 %b 本地简化的月份名称 %b 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(001-366) %p 本地a.m.或p.m.的等价符 %u 一年中的星期数(00-53)星期天为星期的开始 %w 星期(0-6),星期天为星期的开始 %w 一年中的星期数(00-53)星期一为星期的开始 %x 本地相应的日期表示 %x 本地相应的时间表示 %z 当前时区的名称 %% %号本身 python中时间日期格式化符号:
-
元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
-
-
我们先导入time模块,来认识一下python中表示时间的几种格式:
#导入时间模块 >>>import time #时间戳 >>>time.time() 1500875844.800804 #时间字符串 >>>time.strftime("%y-%m-%d %x") '2017-07-24 13:54:37' >>>time.strftime("%y-%m-%d %h-%m-%s") '2017-07-24 13-55-04' #时间元组:localtime将一个时间戳转换为当前时区的struct_time time.localtime() time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24, tm_hour=13, tm_min=59, tm_sec=37, tm_wday=0, tm_yday=205, tm_isdst=0)
-
几种格式之间的转换
# 格式化时间 ----> 结构化时间 ft = time.strftime('%y/%m/%d %h:%m:%s') st = time.strptime(ft,'%y/%m/%d %h:%m:%s') print(st) # 结构化时间 ---> 时间戳 t = time.mktime(st) print(t) # 时间戳 ----> 结构化时间 t = time.time() st = time.localtime(t) print(st) # 结构化时间 ---> 格式化时间 ft = time.strftime('%y/%m/%d %h:%m:%s',st) print(ft)
#结构化时间 --> %a %b %d %h:%m:%s %y串 #time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串 >>>time.asctime(time.localtime(1500000000)) 'fri jul 14 10:40:00 2017' >>>time.asctime() 'mon jul 24 15:18:33 2017' #时间戳 --> %a %d %d %h:%m:%s %y串 #time.ctime(时间戳) 如果不传参数,直接返回当前时间的格式化串 >>>time.ctime() 'mon jul 24 15:19:07 2017' >>>time.ctime(1500000000) 'fri jul 14 10:40:00 2017' t = time.time() ft = time.ctime(t) print(ft) st = time.localtime() ft = time.asctime(st) print(ft)
import time true_time=time.mktime(time.strptime('2017-09-11 08:30:00','%y-%m-%d %h:%m:%s')) time_now=time.mktime(time.strptime('2017-09-12 11:00:00','%y-%m-%d %h:%m:%s')) dif_time=time_now-true_time struct_time=time.gmtime(dif_time) print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1, struct_time.tm_mday-1,struct_time.tm_hour, struct_time.tm_min,struct_time.tm_sec)) 计算时间差
datetime模块
# datatime模块 import datetime now_time = datetime.datetime.now() # 现在的时间 # 只能调整的字段:weeks days hours minutes seconds print(datetime.datetime.now() + datetime.timedelta(weeks=3)) # 三周后 print(datetime.datetime.now() + datetime.timedelta(weeks=-3)) # 三周前 print(datetime.datetime.now() + datetime.timedelta(days=-3)) # 三天前 print(datetime.datetime.now() + datetime.timedelta(days=3)) # 三天后 print(datetime.datetime.now() + datetime.timedelta(hours=5)) # 5小时后 print(datetime.datetime.now() + datetime.timedelta(hours=-5)) # 5小时前 print(datetime.datetime.now() + datetime.timedelta(minutes=-15)) # 15分钟前 print(datetime.datetime.now() + datetime.timedelta(minutes=15)) # 15分钟后 print(datetime.datetime.now() + datetime.timedelta(seconds=-70)) # 70秒前 print(datetime.datetime.now() + datetime.timedelta(seconds=70)) # 70秒后 current_time = datetime.datetime.now() # 可直接调整到指定的 年 月 日 时 分 秒 等 print(current_time.replace(year=1977)) # 直接调整到1977年 print(current_time.replace(month=1)) # 直接调整到1月份 print(current_time.replace(year=1989,month=4,day=25)) # 1989-04-25 18:49:05.898601 # 将时间戳转化成时间 print(datetime.date.fromtimestamp(1232132131)) # 2009-01-17
random模块
>>> import random #随机小数 >>> random.random() # 大于0且小于1之间的小数 0.7664338663654585 >>> random.uniform(1,3) #大于1小于3的小数 1.6270147180533838 #恒富:发红包 #随机整数 >>> random.randint(1,5) # 大于等于1且小于等于5之间的整数*** >>> random.randrange(1,10,2) # 大于等于1且小于10之间的奇数*** #随机选择一个返回 >>> random.choice([1,'23',[4,5]]) # #1或者23或者[4,5] #随机选择多个返回,返回的个数为函数的第二个参数*** >>> random.sample([1,'23',[4,5]],2) # #列表元素任意2个组合,可控制元素个数*** [[4, 5], '23'] #打乱列表顺序 >>> item=[1,3,5,7,9] >>> random.shuffle(item) # 对原列表打乱次序 >>> item [5, 1, 3, 7, 9] >>> random.shuffle(item) >>> item [5, 9, 7, 1, 3]