当前位置: 首页 > news >正文

Python的标准库之时间库(小白五分钟从入门到精通)

 标准库


Python提供了大量的标准库以便用户开发项目,本节主要介绍标准库及其使用方法。在使用标准库前需将标准库导入代码文件。


标准库的介绍


标准库是Python自带的库,无须下载,可直接使用。标准库的目录地址可以通过以下代码(代码的含义见9.5.1小节)获取:
import sys
print (sys.exec prefix)
该代码中的sys.exec_prefix可用于获取当前Python的安装目录地址代码执行结果:
C:\Users\AdministratorAppDatalLocal\Programs\Python\Python3,

标准库的导入方法


在代码中如果需要使用Python自带的标准库,可以使用保留字from和import导入相应的标准库。因为Python自带的标准库是Python官方团队提前写好的代码文件或文件夹(例如图8-1中的大部分文件或文件夹都是一个独立的标准库),所以导入库的原理与6.4节在文件中导入类的原理相同。8.2~8.4节将会介绍标准南time、random和re。这里以标准库time为例,其导入方法如下:

import time
from time import sleep
from time import *
import time as t


#导入整个time库
#导入time库中的sleep()函数
#导入time库中的全部函数
#导入整个time库,并且定义别名为t

6.4节中的from和import组合方法可导入代码所在文件夹中的文件内的函数。若导入标准库时也使用该方法,但标准库并不在代码所在的文件夹中,又该如何导入呢?
针对这个问题,Python内部设置了3个优先搜索路径。当使用import时,例如importwatez,Python会


自动按照以下步骤进行搜索。步骤1,优先在代码所在文件夹中搜索是否存在名为water.py的代码文件。如果不存在则执行下一个搜索步骤。步骤2,搜索Python安装路径下的Lib目录(含标准库)中是否存在名为water.py的代码文件。如果不存在则执行下一个搜索步骤。
步骤3,搜索Python安装路径下的Lib目录中的site-packages目录(即第三方库目录)中是否存在名为water.py的代码文件。如果搜索到对应的代码文件,则可以继续使用代码文件中的函数或类方法。如果仍然搜索不到文件则会出现如下报错信息,表明没有找到名为water的模块。


时间库


Python标准库中的time库主要用于获取当前时间和设置时间的格式。在使用time库之前需要使用import将time库导入代码文件。


获取时间戳


时间戳表示当前时间与1970年1月1日0时0分0秒的时间差(以秒为单位)
示例代码:

 import time02 a=time.time()03 print(a)
代码执行结果:
1622874693.6661327


份注意读者执行代码后的输出结果会与该结果有差异,原因在于time.time()获取的是当前时间与1970年1月1日0时0分0秒的时间差,读者执行代码的时间与笔者编写本书的时间是不一致的。
一个程序是否优良可以通过其运行的稳定性和运行速度来判定,time()方法不仅可以检测程序代码在何时被执行,还可以测量程序的运行速度。
示例代码:

import time
start = time.time()
i = 1
while i<100000000:i += 1
end = time.time()
print('代码启动时间:',start,'\n停止时间:',end,'\n执行时间:',end-start)
#代码执行结果:
代码启动时间:1622875428.4123268
停止时间:1622875436.47678执行时间:8.064453125


从结果可以看出此程序执行100000000次while循环语句一共耗时8秒多,执行速度非常快。如果在while循环中加入print()输出语句,执行时间则会大大增加,因为print()语句在输出信息时需要CPU(CentralProcessing Unit,中央处理器) 进行I/0(Input/0utput,输入输出)操作,需要耗费的时间就会增多。示例代码:

import time
start = time.time()
i = 1
while i<100000000:i += 1print(i)     #时间消耗非常大
end = time.time()
print('代码启动时间:',start, '\n停止时间:',end,'\n执行时间:',end-start)



将该行的print()语句改为写入文本语句。修改后的代码如下:

import time
with open('o.txt','w') as f:start = time.time()i = 1while i<100000000:i += 1f.write(str(i))end = time.time()
print('代码启动时间:',start, '\n停止时间:',end,'\n执行时间:',end-start)


第2行代码创建了一个o.txt文件用于保存循环过程中写入的数据,执行代码后所耗费的时间为68.09210014343262秒,相比使用print()语句消耗的时间减少约93.6%。
8.2.2 获取时间
获取时间可以使用time库中localtime()、gmtime()、ctime()函数实现,但它们获取的时间各不相同。

localtime()函数


localtimme()函数用于获取本地当前时间。其使用形式如下:

localtime(seconds-None)


参数seconds:值可以为None或时间戳值。如果为None表示获取本地当前时间,如果为时间戳值表示将时间戳seconds转换为本地当前时间。
返回值: struct_time数据对象。struct_time数据对象是Python内置数据类型,其形式类似于元组,具体可见以下示例代码的输出结果,其中元素tm_year表示年份、tm_mon表示月份、tm_mday表示日期、tmm_hour表示小时、tm_min表示分钟、tm_sec表示秒、tm_wday表示星期(0表示星期一,1表示星期二,以此类推)、tim_yday表示这一年的第几天、tm_isdst表示时间是否为夏令时(0表示非夏令时,1表示夏令时)。示例代码:

import time
a= time.localtime()#获取本地当前时间。
print(a)        #struct_time数据对象
print(list(a))
b = time.localtime(1622874693.6661327)#将时间戳转换为本地时间
print(b)代码执行结果:
time.struct time(tm year-2021, tm mon=9, tm mday-29, tm hour-23, tm min=42, tm sec-2,tmwday=2,tm yday=272,tm isdst=0)[2021,9,29,23,42,2,2,272,0]time.struct time(tm year=2021,tm mon=6,tm mday=5, tm hour=14, tm min=31, tm sec=33,tmwday=5,tm yday=156,tm isdst=0)


06 print(b)第2行代码使用localtime()函数获取本地当前时间。不同国家和地区有各自的时区。第5行代码使用localtime()函数将时间戳1622874693.6661327(8.2.1小节第1个示例代码获取的时间戳)转换为本地当前时间。

该结果为笔者计算机上的输出结果,其中第1行为获取的本地当前时间struct_time数据值,如果需要获取到本地当前时间中的数值,可以使用list()将struct_time数据值强制转换为列表,见输出结果中的第2行内容如此便可通过列表索引的方式获取其中的时间值。输出结果中的第3行为时间戳1622874693.6661327所对应的本地当前时间。


gmtime()函数


gmtime()函数用于获取UTC(Universal Time Coordinated,世界协调时,又称世界标准时间。中国的时间与世界标准时间相差8个小时)时间。其使用形式如下:

def gmtime(seconds=None)



参数seconds:值可以为None或时间戳值。如果为None表示获取当前UTC时区(0时区)的时间,如果为时间戳值表示将时间戳转换为UTC时区(0时区)的时间。返回值:struct_time数据对象。
示例代码:

import time
a= time.gmtime()    #获取UTC时间
print(a)
#代码执行结果:time,struct time(tm year=2021,tm mon=9, tm mday=29,tm hour=15, tm min=43,tm_sec=12, twday=2,tm yday=272,tm isdst=0)

第2行代码使用gmtime()函数获取当前UTC时区(0时区)的时间。
将该结果与上一示例代码输出的本地当前时间进行对比,tm_hour的值相差8.


ctime()函数


ctimme()函数用于获取字符串形式的时间。其使用形式如下:

ctime(seconds=None)


参数seconds:值可以为None或时间戳值。如果为None表示获取字符串形式的当前时间,如果为时间值表示将时间戳转换为字符串形式的时间。
返回值:字符串、形式为星期月份日期小时:分钟:秒年份,值均用英文和数字表示。
示例代码:

import time
a= time.ctime() #获取字符串形式的时间值
print(a)代码执行结果:
Wed Sep 29 23:45:47 2021


第2行代码使用ctime()获取字符串形式的当前时间。

此种表达形式为外国人常常使用的形式,顺序依次为星期、月份、日期、小时(后加冒号)、分钟(后加冒号)、秒、年份。

 时间格式转换


时间格式转换涉及time库中的mktime()、strftime()及strptime()函数,可以实现将不同格式的时间表示进行转换,其中strftime()的使用率相对较高。时间格式化在办公过程中可用于通过代码自动获取指定格式的时间,便于将其写入指定文件,例如实现在Excel或Word文件中写入时间。


emktime()函数


mktime()函数用于将struct_time对象变量转化为时间戳。其使用形式如下:mktime(p tuple)
参数p_tuple:为struct_time对象,参数必须给出,否则会抛出错误。
示例代码:

import time02 print(time,mktime(time,localtime())


第2行代码使用mktime()函数将本地当前时间struct_time对象转换为时间戳,与time.time()效果相同。
struct_time对象是Pvthon内部的数据类型,用户无法构建。


strftime()函数


strftime()函数用于将struct_time对象变量转换为格式化的字符串(与字符串中的format()方法类似)其使用形式如下:

strftime(format, p tuple=None)

参数formmat:根据format格式定义输出时间。表8-1所示的内容为strftime()中的format格式化字符串formmat格式化字符使用第1列中的格式化字符串表示,表格第2列和第3列分别为对应格式化字符串的解释、值范围和实例。

参数p_tuple:为struct_time对象,函数根据format参数将struct_time对象转换为对应的格式化字符串。如果p_tuple未指定则默认传入time.localtime()。如果p_tuple中的任何一个元素越界,代码程序将会抛出ValueError.
示例代码:

import time
a = time.localtime()
b= time.strftime('%Y-%m-%d-%H:%M:%S',a)#将struct_time对象转换为格式化的字符串
print(a,'\n',b)代码执行结果:
time.struct time(tm year=2022,tm mon=9, tm mday=7, tm hour=16, tm min=12, tm sec-15,wday=2,tm yday=250,tm isdst=0)2022-09-07-16:12:15

第3行代码使用strftime()将本地当前时间a转换为'%Y-%m-%d-%H:%M:%S'格式。其中%Y对应structtime中的年份值、%m对应月份值、%d对应日期值、%H对应小时值、%M对应分钟值、%S对应秒值。

输出结果为2022-09-07-16:12:15,这种展示效果更便于阅读。输出结果中的“”可以更换为其他内容。

示例代码:


import time
b= time.strftime('%Y年-%m月-%d日-%H时:%M分:%S秒')
print(b)代码执行结果:
2022年-09月-07日-16时:12分:15秒

strptime()函数


strptime()函数用于把一个格式化时间字符串转化为struct_time数据对象(与strftime()互为逆操作其使用形式如下:

strptime(string, format)


参数string:为字符串,与strftime()函数输出的字符串相同,例如'2021-09-30-12:36:19'参数format:生成参数string时所需的格式,与strftime()函数中的format参数相同。示例代码:

import time
a = time.strptime('2021-09-30','%Y-%m-%d')#把一个格式化时间字符串转化为struct_time数据
print(a)代码执行结果:
time.struct time(tm year=2021,tm mon=9, tm mday=30,tm hour=0, tm min=0, tm sec-0, wday=3,tm yday=273,tm isdst=-1)


第2行代码中格式化后的内容'2021-09-30'是通过'%Y-%m-%d'格式获取的
由于格式化字符串中缺少时间,因此输出结果中关于时间的参数均为0。


时间休眠


当要让代码程序在执行前等待一段时间,可以使用sleep(参数)来实现,其中参数为程序休眠的时长,其值可以是小数或整数,单位为秒。
示例代码:


import time
time.sleep(10)
print('此消息10秒后输出')

第2行代码设置程序休眠10秒钟,即在10秒后才开始执行第3行代码,读者可自行尝试并观察运行效果。time库中还有很多其他的方法,读者可以使用dir(time)来获取time库中的所有方法,还可以使用help(time,方法)的形式获取相应方法的说明。

http://www.dtcms.com/a/271504.html

相关文章:

  • 【Netty+WebSocket详解】WebSocket全双工通信与Netty的高效结合与实战
  • 循环神经网络详解
  • cherryStudio electron因为环境问题无法安装解决方法或打包失败解决方法
  • NLP自然语言处理04 transformer架构模拟实现
  • Git版本控制完全指南:从入门到实战(简单版)
  • 【02】MFC入门到精通——MFC 手动添加创建新的对话框模板
  • 【PyTorch】PyTorch中torch.nn模块的全连接层
  • C++每日刷题 day2025.7.09
  • 备受期待的 MMORPG 游戏《侍魂R》移动端现已上线 Sui
  • RK3588 buildroot 解决软件包无法下载
  • 用户查询优惠券之缓存击穿
  • RAC-CELL(小区)处理
  • Ubuntu连接不上网络问题(Network is unreachable)
  • 国产航顺HK32F030M: 串口调试debug,重定向c库函数printf到串口,重定向后可使用printf函数
  • 记一次接口优化历程 CountDownLatch
  • C语言模块化编程思维以及直流电机控制(第四天)
  • 深度学习——损失函数
  • 【使用Flask基于PaddleOCR3.0开发一个接口 调用时报错RuntimeError: std::exception】
  • JVM调优实战指南:让Java程序性能飞升的奥秘
  • PanTS: The Pancreatic Tumor Segmentation Dataset
  • 使用anaconda创建基础环境
  • 数据分析框架和方法
  • 数据分析-名词
  • pip 安装加速指南:配置国内镜像源(中国科技大学、清华、阿里云等)
  • Java武林:虚拟机之道 第七章:秘籍解析 - JVM调优参数
  • 经验分享-没有xcode也可以上传App Store Connect
  • S7-1500——(一)从入门到精通1、基于TIA 博途解析PLC程序结构(一)
  • c语言中的数组II
  • 景观桥 涵洞 城门等遮挡物对汽车安全性的影响数学建模和计算方法,需要收集那些数据
  • 周立功汽车软件ZXDoc深度解析:新能源汽车开发新基建的破局之道