一.sleep休眠
[root@rhel8 day04]# vim demo01_time.py
import time
def banzhuan():print("搬磚")time.sleep(3.5) #讓程序休眠3.5秒print("結束")banzhuan()[root@rhel8 day04]# python3 demo01_time.py
搬磚
結束
運行時,會發現程序中間暫停了3.5秒
二.time.time時間戳
從1970年1月1日00:00:00開始,到現在的秒數
[root@rhel8 day04]# vim demo01_time.py
print(time.time())
[root@rhel8 day04]# python3 demo01_time.py
1702115925.7090266
可以利用上面自定義的函數+時間戳,驗證sleep的效果,用程序執行后的時間戳減去程序執行前的時間戳,查看得到的秒數
[root@rhel8 day04]# vim demo01_time.py
import time
def banzhuan():print("搬磚")time.sleep(3.5) #讓程序休眠3.5秒print("結束")time1 = time.time()
banzhuan()
time2 = time.time()
print("spend:",time2-time1)
[root@rhel8 day04]# python3 demo01_time.py
搬磚
結束
spend: 3.5039751529693604
結果顯示,中間暫停了3.5秒。
三.結構化時間
將時間戳轉換為UTC時區的結構化時間
[root@rhel8 day04]# vim demo01_time.py
import timeprint(time.gmtime(time.time()))
[root@rhel8 day04]# python3 demo01_time.py
time.struct_time(tm_year=2023, tm_mon=12, tm_mday=9, tm_hour=10, tm_min=3, tm_sec=49, tm_wday=5, tm_yday=343, tm_isdst=0)
time.struct_time(tm_year=2023, tm_mon=12, tm_mday=9, tm_hour=10, tm_min=3, tm_sec=49, tm_wday=5, tm_yday=343, tm_isdst=0)?
可以得到九個字段,每個字段分別代表:
tm_year | 代表年份 |
tm_mon | 代表月份 |
tm_mday | 代表當月的第幾天 |
tm_hour | UTC時區的時間,換算成北京時間需要加八個小時 |
tm_min | 小時的第幾分鐘 |
tm_sec | 分鐘的第幾秒 |
tm_wday | 一周的第幾天,按照0,1,2,3,4,5,6計算,今天周六,就顯示5 |
tm_yday | 一年的第多少天 |
tm_isdst | 是否為夏令時 |
可以用索引方式取值
import timedata = time.gmtime(time.time())
print(data)
print(data[0])
print(data.tm_year,data.tm_hour,data.tm_min,data.tm_sec)
[root@rhel8 day04]# python3 demo01_time.py
time.struct_time(tm_year=2023, tm_mon=12, tm_mday=9, tm_hour=10, tm_min=14, tm_sec=46, tm_wday=5, tm_yday=343, tm_isdst=0)
2023
2023 10 14 46
四.localtime()
time.localtime()表示當前時區的結構化時間
[root@rhel8 day04]# vim demo01_time.py
import timedata = time.localtime()
print(data)
[root@rhel8 day04]# python3 demo01_time.py
time.struct_time(tm_year=2023, tm_mon=12, tm_mday=9, tm_hour=18, tm_min=24, tm_sec=14, tm_wday=5, tm_yday=343, tm_isdst=0)
五.結構化時間轉換為時間戳
[root@rhel8 day04]# vim demo01_time.py
import timedata = time.mktime(time.localtime())
print(data)
[root@rhel8 day04]# python3 demo01_time.py
1702117553.0
六.結構化時間--->時間字符串
[root@rhel8 day04]# vim demo01_time.py
import time
#%Y 年 %m 月 %d 日 %H 小時 %M 分鐘 %S 秒
data = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
print(data)
[root@rhel8 day04]# python3 demo01_time.py
2023-12-09 19:19:04
七.時間字符串--->結構化時間
[root@rhel8 day04]# vim demo01_time.py
import time
#%Y 年 %m 月 %d 日 %H 小時 %M 分鐘 %S 秒
data = time.strptime("2029-11-01 19:56:47","%Y-%m-%d %H:%M:%S")
print(data)[root@rhel8 day04]# python3 demo01_time.py
time.struct_time(tm_year=2029, tm_mon=11, tm_mday=1, tm_hour=19, tm_min=56, tm_sec=47, tm_wday=3, tm_yday=305, tm_isdst=-1)
八.總結
練習
有一個日志文件內容如下,要求取出9點--12點的內容
[root@rhel8 day04]# cat /opt/myweb.log
2030-01-02 08:01:43 aaaaaaaaaaaaaaaa
2030-01-02 08:34:23 bbbbbbbbbbbbbbbb
2030-01-02 09:23:12 cccccccccccccccccccc
2030-01-02 10:56:13 dddddddddddddddddddddd
2030-01-02 11:38:19 eeeeeeeeeeeeeeeeeeeee
2030-01-02 12:02:28 ffffffffffffffffffff
?
使用readlines函數方式如下
[root@rhel8 day04]# vim test02_time.py
import time
t9 = time.strptime("2030-01-02 09:00:00","%Y-%m-%d %H:%M:%S")
t12 = time.strptime("2030-01-02 12:00:00","%Y-%m-%d %H:%M:%S")with open("/opt/myweb.log",mode="r") as f:for line in f.readlines():t = time.strptime(line[:19],"%Y-%m-%d %H:%M:%S")if t9 <= t <= t12:print(line,end="")
[root@rhel8 day04]# python3 test02_time.py
2030-01-02 09:23:12 cccccccccccccccccccc
2030-01-02 10:56:13 dddddddddddddddddddddd
2030-01-02 11:38:19 eeeeeeeeeeeeeeeeeeeee
?使用readlines函數方式如下
[root@rhel8 day04]# vim test02_time.py
import time
t9 = time.strptime("2030-01-02 09:00:00","%Y-%m-%d %H:%M:%S")
t12 = time.strptime("2030-01-02 12:00:00","%Y-%m-%d %H:%M:%S")with open("/opt/myweb.log",mode="r") as f:while True:data = f.readline()if len(data) == 0:breakelse:t = time.strptime(data[:19],"%Y-%m-%d %H:%M:%S")if t9 <= t <= t12:print(data,end="")
[root@rhel8 day04]# python3 test02_time.py
2030-01-02 09:23:12 cccccccccccccccccccc
2030-01-02 10:56:13 dddddddddddddddddddddd
2030-01-02 11:38:19 eeeeeeeeeeeeeeeeeeeee
?