目录

一、time库基本介绍

1.1 time库功能、引用使用格式

2.2 time库包含三类函数( 时间获取、时间格式化输出、程序计时 )

二、时间获取( time()、ctime()、gmtime() )

三、时间格式化( strftime()、strptime() )

四、程序计时( sleep()、perf_counter() )

五、“文本进度条”实例

5.1 简单进度条

5.2 单行刷新


一、time库基本介绍

1.1 time库功能、引用使用格式

time库是Python中处理时间的标准库之一,有如下的基本功能:

  • 计算机时间的表达
  • 获取系统时间并格式化输出
  • 系统级精确计时,可用于程序分析

time库引用/使用的三种格式(库引用方法说明参考“Python初学2”第一章):

1. 法一(基本用法)

import time                                        # 关键字import用于库引用

time.<函数名>(<函数参数>)              # 使用:库名.函数名()

2. 法二(不常用用法)

from time import *

<函数名>(<函数参数>)

3. 法三(推荐用法)

import time as <库别名>

<库别名>.<函数名>(<函数参数>)

2.2 time库包含三类函数( 时间获取、时间格式化输出、程序计时 )

  • 时间获取类:time()、ctime()、gmtime()
  • 时间格式化输出类:strftime()、strptime()
  • 程序计时类:sleep()、perf_counter()

二、时间获取( time()、ctime()、gmtime() )

表2-1 time库中3个时间获取类函数
时间获取类 说明
time()

功能:获取当前时间戳

返回值:浮点数

说明:1970年1月1日0:00至现在的时间,单位秒。使用示例如图2-1所示

 

图2-1
ctime()

功能:获取当前时间

返回值:字符串

说明:以人类易读的方式显示。使用示例如图2-2所示

图2-2
gmtime()

功能:获取当前时间

返回值:计算机内部时间变量类型

说明:表示为计算机可处理的时间格式。使用示例如图2-3所示

图2-3

三、时间格式化( strftime()、strptime() )

时间格式化似于字符串格式化(字符串格式化说明参考“Python初学4”第五章),是将时间以合理的方式展示出来的方法,这就需要展示模板(由特定的格式化控制符组成,见表3-2)。

表3-1 time库中2个时间格式化输出类函数
时间格式化输出类 说明
strftime(tpl, ts)

功能:将计算机内部时间变量转换成人类易读的时间形式

返回值:字符串

参数:tpl——格式化模板字符串,定义输出效果

           ts——计算机内部时间变量类型

说明:使用示例如图3-1所示

图3-1
strptime(str, tpl)

功能:将时间字符串转换成计算机内部时间变量

返回值:计算机内部时间变量类型

参数:str——字符串形式的时间值

           tpl——格式化模板字符串,定义输入效果

说明:使用示例如图3-2所示

图3-2

 

表3-2 时间格式化模板字符串
格式化字符串 说明 可以显示值的范围
%Y 年份数字 0000 ~ 9999
%m 月份数字 01、02、03、04、05、06、07、08、09、10、11、12
%B 月份名称 January、February、March、April、May、June、July、August、September、October、November、December
%b 月份名称缩写 Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov、Dec
%d 日期数字 01 ~ 31
%A 星期名称 Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday
%a 星期名称缩写 Mon、Tue、Wed、Thu、Fri、Sat、Sun
%H 小时数字(24制) 00 ~ 23
%I 小时数字(12制) 01 ~ 12
%p 上/下午 AM、PM
%M 分钟数字 00 ~ 59
%S 秒数字 00 ~ 59

四、程序计时( sleep()、perf_counter() )

表4-1 time库中2个程序计时类函数
程序计时类 说明
perf_counter()

功能:精确计时

返回值:浮点数

说明:CPU级别的精确时间计数值,单位秒。由于计数起点未知,故连续调用做差值才有意义。使用示例如图4-1所示

图4-1
sleep(s)

功能:延时s秒时间

返回值:无

参数:s——延时时间,整数浮点数都可以,单位秒

说明:让程序休眠指定的时间,然后继续运行

五、“文本进度条”实例

5.1 简单进度条

问题分析:

  • 采用字符串方式打印可以动态变化的文本进度条
  • 采用 sleep() 函数模拟进度的停顿感

代码示例:

import time          # 引用time库
scale = 30           # 定义文本进度条的总长度
print("--------执行开始--------")
for i in range(scale + 1):  # 定义for循环,i从0到scale
    a = "*" * i;            # 将字符串*复制i次,用于显示已加载完的进度条
    b = "." * (scale - i)   # 将字符串.复制(scale - i)次,用于显示还未加载的进度条
    c = (i / scale) * 100   # 计算进度条的进度百分比
    print("{2:>3.0f}%[{0}->{1}]".format(a, b, c))   # 打印进度条
    time.sleep(0.1)         # 进度条以0.1秒为单位进行更新
print("--------执行结束--------")

数值操作符 / 和 * 参考“Python初学3”第二章。字符串操作符 * 参考“Python初学4”第二章。.format()格式化输出方法参考“Python初学4”第五章。

程序运行结果:

5.2 单行刷新

问题分析:

  • 在上面效果的基础上,进度条需要能在一行中刷新变化(后打印的字符覆盖之前的字符)
  • print()函数中使用字符 \r ,使光标回退到行首;使用 end="" 使打印完后的光标不自动换行。举例如下:

print(“\r{}”.format(a), end="")

# 字符串 \r 作用:打印前光标先置到行首

# end="" 作用:打印完之后,print() 函数不自动换行,即光标留在本行行尾

字符串的转义字符 \r \n \b 参考“Python初学4”第一章1.1节。

代码示例:

import time
scale = 30
print("执行开始".center(scale // 2, "-"))   # 使用字符串 center() 处理方法,使字符串居中显示
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{2:>3.0f}% [{0}->{1}] {3:^.2f}s".format(a, b, c, dur), end="")   # \r 使打印前光标回到行首,结尾处的 end="" 使打印完光标不自动换行
    time.sleep(0.1)
print("\n" + "执行结束".center(scale // 2, "-"))

字符串处理方法 str.center(width[, fillchar]) 参考“Python初学4”第四章。

程序运行结果:

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐