time库基本情况
Time库是python中处理时间的标准库
- 计算机时间表达
- 提供获取系统时间并格式化输出功能
- 提供系统级精确计时功能
time库以
Import time
Time.< b>()
形式调用相关函数
Time库包含三类函数
- 时间获取:time() ctime() gmtime()
- 时间格式化:strftime() strptime()
- 程序计时:sleep(),perf_counter()
时间获取
1. time()
- 获取当前时间戳,即电脑内部时间值,浮点数
C:\Users>python
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> time.time()
1587539063.851498
>>>
2. ctime()
- 获取当前时间并以易读方式表示,返回字符串
ps:time库获取人类译读方式时间的最简单函数
>>> time.ctime()
'Wed Apr 22 15:05:50 2020'
3. gmtime()
- 获取当前时间,表示为计算机可处理的时间格式
>>> time.gmtime()
time.struct_time(tm_year=2020, tm_mon=4, tm_mday=22, tm_hour=7, tm_min=9, tm_sec=1, tm_wday=2, tm_yday=113, tm_isdst=0)
>>>
时间格式化
将时间以合理的方式展示出来
- 格式化:类似字符串格式化,需要有展示模板
- 展示模板由特定的格式化控制符组成
- strftime()方法
1.strftime(tpl,ts)
- tpl是格式化模板字符串,用来定义输出效果
- ts是计算机内部时间类型变量
>>> t = time.gmtime()
>>> time.strftime("%Y-%m-%d %H:%M:%S",t)
'2020-04-22 07:14:05'
ps:时间格式化很重要的一点就是将计算机内部时间中表达的年月日时分秒等相关的与时间有关的信息,用一种变量的形式进行合理组合,并且合理输出,通过控制来表达输出格式
- 格式化字符串
所有控制符都是以%加一个字母的形式来表达的
2.strptime(str,tpl)
- str是字符串形式的时间值
- tpl是格式化模板字符串,用来定义输入效果
- strptime和strftime是一个互补关系,它可将一段字符串变为时间变量(也就是将一段字符串变为计算机内部可以操作的一个时间)
>>> timeStr = '2020-04-22 07:14:05'
>>> time.strptime(timeStr,"%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2020, tm_mon=4, tm_mday=22, tm_hour=7, tm_min=14, tm_sec=5, tm_wday=2, tm_yday=113, tm_isdst=-1)
>>>
程序计时
- 程序计时指测量起止动作所经历时间的过程
- 测量时间:per_counter()
#它可以获取计算机中CPU也就是中央处理器及其频率运行的时钟这里时间往往是以纳秒来计算,所以这样获得的时间会非常精准 - 产生时间:sleep()
#它可以让程序去休眠,或者产生一定的时间
文本进度条实例
-
需求分析:
1.采用字符串方式打印可以动态变化的文本进度条
2.进度条需要能在一行中逐渐变化 -
问题分析:
-采用sleep()函数模拟一个持续的进度 -
代码
#TextProBarV1.py
#文本进度条
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("------执行结束------")
------执行开始------
0 %[->..........]
10 %[*->.........]
20 %[**->........]
30 %[***->.......]
40 %[****->......]
50 %[*****->.....]
60 %[******->....]
70 %[*******->...]
80 %[********->..]
90 %[*********->.]
100%[**********->]
------执行结束------
>>>
单行动态刷新
-
刷新的本质:用后打印的字符覆盖之前的字符
-
不能换行:print()需要被控制(print默认输出后会自动换行)
- print( ,end=" ")
-
要能回退:打印后光标退回到之前的位置 \r
-
代码2
#TextProBarV2.py
#文本进度条
import time
scale = 50 #scale规模,定义进度条长度
print("执行开始".center(scale//2,"-"))
start = time.perf_counter() #获取当前系统时间
for i in range(scale+1):
a = '*' * i
b = '.' * (scale - i)
c = (i/scale) * 100
#再次获取时间,并计算差值,实现计时功能
dur = time.perf_counter() - start
print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end="")
time.sleep(0.1)
print("\n"+"执行结束".center(scale//2,'-'))
在IDLE环境中执行此代码,我们看到的是所有的信息都被展示了出来
-----------执行开始----------
0 %[->..................................................]0.00s
2 %[*->.....................