Python day 6 time库
- 最基本的处理时间的标准库,
(1) 可用于计算机时间的表达
(2) 获取系统时间,格式化输出时间
(3) 精确计时功能,可用于程序性能分析
- 三类函数
(1) 时间获取:time() ctime() gmtime()
(2) 时间格式化: strftime() strptime()
(3) 程序计时 sleep() perf_counter()
- 时间获取
(1) 都是无参数的
(2) Time()获取当前的时间戳,是一个很长的浮点数,
1573730037.1486392
(3) Ctime()获得一个易理解的字符串时间 “星期-月份-日期-时分秒-年份”
'Thu Nov 14 19:15:18 2019'
(4) Gmtime()生成一种计算机能够处理的时间格式
time.struct_time(tm_year=2019, tm_mon=11, tm_mday=14, tm_hour=11, tm_min=17, tm_sec=6, tm_wday=3, tm_yday=318, tm_isdst=0)
- 时间输出格式化
(1) 类似字符串输出格式化,需要有展示模板,展示模板由特定的格式化控制符组成
(2) Strftime(tpl,ts) 方法
tpl是字符串,是下文提到的时间控制符
ts 是计算及内部时间类型变量
(3) Strptime(str,tpl)方法
Str是字符串形式的时间
Tpl是时间控制符
Import time as t
a = t.gmtime()
>>> t.strftime('%Y-%m-%d %H:%M:%S',a)
'2019-11-14 11:38:58'
(4) 时间控制符
① %Y 年份
② %m 月份 数字
③ %B 月份名称 英文
④ %b 月份缩写 英文缩写
⑤ %A 星期 英文
⑥ %a 星期缩写 英文缩写
⑦ %H 小时 二十四小时制
⑧ %I 小时 十二小时制
⑨ %p AM/PM
⑩ %M 分钟 数字
⑪ %S 秒 数字
- 时间测量
(1) 精准测量时间perf_counter() 以纳秒为单位
类似于时间戳,计算差值以测量时间
start = t.perf_counter()
>>> end = t.perf_counter()
>>> end-start
14.1491517999998
在赋值的一瞬间,函数完成了他的使命
(2) 程序计时 应用广泛
(3) Sleep(s) 让程序休眠s秒
import time as t
def wait():
t.sleep(3.3)
wait()
print('sjdk')
- 实例:文本进度条
(1) 要求:采用字符串方式 打印可以动态变化的文本进度条 进度条需要能在一行中逐渐变换
(2) 简单的开始
import time
scale = 10
print('-------开始执行---------')
for i in range(scale+1):
a = '*'*i
b = '.'*(scale-i)
c = (i/scale)*100
print('{:^3.0f}%[{}->{}]'.format(c,a,b))
time.sleep(0.1)
print('{:-^20}'.format('执行结束'))
-------开始执行---------
0 %[->..........]
10 %[*->.........]
20 %[**->........]
30 %[***->.......]
40 %[****->......]
50 %[*****->.....]
60 %[******->....]
70 %[*******->...]
80 %[********->..]
90 %[*********->.]
100%[**********->]
--------执行结束--------
(3) 单行动态刷新
① 刷新的本质:用之后打印出来的字符覆盖之前的字符
② 所以不能换行,而且要能让光标退回原来的位置
③ import time as t
④ for i in range(101):
⑤ print('\r{:3}%'.format(i),end='')
⑥ t.sleep(0.2)
IDLE屏蔽了\r的功能
在cmd中运行得进度百分比递增刷新效果
(4) 完整效果
import time
scale = 10
print('-------开始执行---------')
for i in range(scale+1):
a = '*'*i
b = '.'*(scale-i)
c = (i/scale)*100
print('{:^3.0f}%[{}->{}]'.format(c,a,b))
time.sleep(0.1)
print('{:-^20}'.format('执行结束'))