真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python標(biāo)準(zhǔn)庫及第三方庫怎么使用

本篇內(nèi)容介紹了“Python標(biāo)準(zhǔn)庫及第三方庫怎么使用”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

十載的公安網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。網(wǎng)絡(luò)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整公安建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)建站從事“公安網(wǎng)站設(shè)計”,“公安網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

一、time模塊

1.time模塊簡介

time模塊是Python專門用來處理時間的內(nèi)建庫。它自帶了很多方法,可以將不同的時間類型進行相互轉(zhuǎn)換,例如可以將時間戳類型轉(zhuǎn)換為時間元組、時間元組轉(zhuǎn)換為格式化時間、 格式化時間轉(zhuǎn)換為時間戳......

2.常見的時間類型

在Python中,通常有這幾種方式來表示時間:

  • 時間戳:time.time(),無參數(shù),獲取當(dāng)前時間時間戳,浮點型;

  • 時間字符串:time.ctime(),秒 ->字符串;time.asctime(),元組 -> 字符串;

  • 時間元組(struct_time):time.localtime()

  • 格式化時間:time.strftime()

import time

# 時間戳類型
t1 = time.time()
print(t1)
r_time = round(t1 * 1000)# 四舍五入,精確到毫秒
print(r_time)
'''
1677555790.7605402
1677555790761
'''

# 時間字符串
t2 = time.asctime()
print(t2)
'''
Tue Feb 28 11:44:15 2023
'''

# 時間元組
t3 = time.localtime()
print(t3)
'''
依次對應(yīng):年份,月份,一個月的第幾天,幾點,幾分,幾秒,星期幾,一年中的第幾天,是否為閏年
time.struct_time(tm_year=2023, tm_mon=2, tm_mday=28, tm_hour=11, tm_min=44, tm_sec=53, tm_wday=1, tm_yday=59, tm_isdst=0)
'''

3.時間類型相互轉(zhuǎn)換

時間戳類型可以轉(zhuǎn)換為時間元組、時間元組可以轉(zhuǎn)換為格式化時間、 格式化時間可以轉(zhuǎn)換為時間戳...

Python標(biāo)準(zhǔn)庫及第三方庫怎么使用

① 時間戳<===>時間元組 相互轉(zhuǎn)換
  • time.time() 返回當(dāng)前時間的時間戳 返回值形式:1677563451.2548294

  • time.localtime() 返回當(dāng)前時間的時間元組,返回值形式:time.struct_time(tm_year=2023, tm_mnotallow=2, tm_mday=28, tm_hour=13, tm_min=52, tm_sec=2, tm_wday=1, tm_yday=59, tm_isdst=0)

  • time.mktime() 將時間元組轉(zhuǎn)換為浮點型時間,返回值形式:1677556220.0

# 時間戳?xí)r間元組 相互轉(zhuǎn)換
# 1-時間戳轉(zhuǎn)換為時間元組
tt1 = time.localtime(time.time())
print(tt1)
'''
time.struct_time(tm_year=2023, tm_mon=2, tm_mday=28, tm_hour=11, tm_min=48, tm_sec=57, tm_wday=1, tm_yday=59, tm_isdst=0)
'''
# 2-時間元組轉(zhuǎn)換為時間戳
tt2 = time.mktime(time.localtime())
print(tt2)
'''
1677556220.0
'''
② 時間元組<===>格式化時間 相互轉(zhuǎn)換
  • time.strftime() 傳入時間元組,可以將時間元組轉(zhuǎn)換為格式化時間,返回值形式:2023-02-28 13:52:02

  • time.strptime() 傳入格式化時間,可以將格式化時間轉(zhuǎn)換為時間元組,返回值形式:time.struct_time(tm_year=2023, tm_mon=2, tm_mday=28, tm_hour=13, tm_min=52, tm_sec=2, tm_wday=1, tm_yday=59, tm_isdst=0)

# 時間元組格式化時間 相互轉(zhuǎn)換
# 1-時間元組轉(zhuǎn)換為格式化時間
tt3 = time.localtime()
print(time.strftime("%Y-%m-%d %H:%M:%S".format(tt3)))
'''
2023-02-28 13:52:02
'''
# 2-格式化時間轉(zhuǎn)換為時間元組
tt4 = time.strptime("2023-02-28 11:54:25", "%Y-%m-%d %H:%M:%S")
print(tt4)
'''
time.struct_time(tm_year=2023, tm_mon=2, tm_mday=28, tm_hour=11, tm_min=54, tm_sec=25, tm_wday=1, tm_yday=59, tm_isdst=-1)
'''
③ 時間戳<===>格式化時間 相互轉(zhuǎn)換

時間戳和格式化時間之間,并不能直接相互轉(zhuǎn)換,中間要借助時間元組過度、來進行轉(zhuǎn)換。

# 時間戳格式化時間 相互轉(zhuǎn)換
# 1-格式化時間轉(zhuǎn)換為時間戳
time_format = "2023-02-28 19:11:56"
# 先將格式化時間轉(zhuǎn)換為時間元組
time_stamp1 = time.strptime(time_format, "%Y-%m-%d %H:%M:%S")
# 再將時間元組轉(zhuǎn)換為時間戳
tt7 = time.mktime(time_stamp1)
print(tt7)
'''
1677582716.0
'''
# 2-時間戳轉(zhuǎn)換為格式化時間
time_stamp2 = 1677582716.0
tt8 = time.strftime("%Y-%m-%d %H:%M:%S".format(time_stamp2))
print(tt8)
'''
2023-02-28 19:11:56
'''
④ 指定類型時間轉(zhuǎn)換為時間字符串
  • time.asctime() 時間元組轉(zhuǎn)換為時間字符串,參數(shù)為時間元組,返回值形式:Tue Feb 28 11:51:05 2023;

  • time.ctime() 時間戳轉(zhuǎn)換為時間字符串,參數(shù)為時間戳,返回值形式:Tue Feb 28 11:51:05 2023;

# 指定類型時間轉(zhuǎn)換為時間字符串
# 1-時間元組轉(zhuǎn)換為時間字符串
tt5 = time.asctime(time.localtime())
print(tt5)
'''
Tue Feb 28 11:51:05 2023
'''
# 2-時間戳轉(zhuǎn)換為時間字符串
timestamp = 1677582279.0
tt6 = time.ctime(timestamp)
print(tt6)
'''
Tue Feb 28 11:51:05 2023
'''

二、datetime模塊

1.datetime模塊簡介

datetime是Python中自帶的、用來處理時間日期的模塊。在Python中表示時間的格式有三種:時間戳、元組、格式化時間。與time模塊類似,datetime模塊也能夠?qū)atetime類型轉(zhuǎn)換成這三種類型。

datetime常用的幾大類,分別為:

  • date:日期類,主要用來處理年、月、日;

  • time:時間類,主要用來處理時、分、秒;

  • datetime:日期時間類,date類和time類的綜合使用,可以用來處理年、月、日、時、分、秒;

  • timedelta:表示時間間隔,用來處理時間加減;

  • tzinfo:用來處理時區(qū)信息;

Python標(biāo)準(zhǔn)庫及第三方庫怎么使用

2.date類常用方法或?qū)傩?/h4>

date類包含三個參數(shù),分別為:year,month,day,返回格式為year-month-day。

設(shè)置指定日期
import datetime

# 設(shè)置指定日期
set_date = datetime.date(day=1, month=3, year=2025)
print(set_date)# 2025-03-01
獲取今天日期的年份、月份、日
# 獲取今天日期的年份、月份、日
today = datetime.date.today()
print("標(biāo)準(zhǔn)日期格式:", today.isoformat())# 標(biāo)準(zhǔn)日期格式: 2023-03-01
print("當(dāng)前日期的三元元祖: 年、第幾周、一周的第幾天:", today.isocalendar())# 當(dāng)前日期的三元元祖: 年、第幾周、一周的第幾天: (2023, 9, 3)
print("當(dāng)前日期:", today)# 當(dāng)前日期: 2023-03-01
print("當(dāng)前年月日:", today.today())# 當(dāng)前年月日: 2023-03-01
print("當(dāng)前年份:", today.year)# 當(dāng)前年份: 2023
print("當(dāng)前月份:", today.month)# 當(dāng)前月份: 3
print("當(dāng)前日:", today.day)# 當(dāng)前日: 1
判斷今天是這周的第幾天
# 判斷今天是這周的第幾天
today = datetime.date.today()
print("當(dāng)前日期是這周的第幾天(星期一==0/周日==6):", today.weekday())# 當(dāng)前日期是這周的第幾天(星期一==0/周日==6): 2
print("當(dāng)前日期是這周的第幾天(星期一==1/周日==7):", today.isoweekday())# 當(dāng)前日期是這周的第幾天(星期一==1/周日==7): 3
當(dāng)前日期自動轉(zhuǎn)換為其他格式
# 當(dāng)前日期的其他格式
today = datetime.date.today()
print("當(dāng)前日期的時間字符串形式:", today.ctime())# 當(dāng)前日期的時間字符串形式: Wed Mar1 00:00:00 2023
print("當(dāng)前日期的元組形式:", today.timetuple())
print("當(dāng)前日期的格式化時間形式:", today.strftime("%Y-%m-%d %H:%M:%S"))# 當(dāng)前日期的格式化時間形式: 2023-03-01 00:00:00
替換日期
# 替換日期
today = datetime.date.today()
new_day = today.replace(year=2038, month=8, day=31)
print("替換后的日期為:", new_day)# 替換后的日期為: 2038-08-31
指定格式轉(zhuǎn)換為日期
# 指定格式轉(zhuǎn)換為日期
today = datetime.date.today()
t1 = today.fromtimestamp(1691453288)# 注意精確到秒、不是毫秒
print("從時間戳轉(zhuǎn)換為日期:", t1)# 從時間戳轉(zhuǎn)換為日期: 2023-08-08
t2 = today.fromisoformat("2025-03-03")
print("從三元組轉(zhuǎn)換為日期:", t2)# 從三元組轉(zhuǎn)換為日期: 2025-03-03
t3 = today.fromisocalendar(year=2038, week=9, day=7)
print("從三元組轉(zhuǎn)換為日期:", t3)# 從三元組轉(zhuǎn)換為日期: 2038-03-07

3.time類常用方法或?qū)傩?/h4>

datetime.time() 可以傳遞多個參數(shù):

  • hour 小時

  • minute 分鐘

  • second 秒

  • microsecond 微秒

  • tzinfo 時區(qū)

常用屬性
t = datetime.time(hour=12, minute=59, second=59, microsecond=59)# 實例化time對象,傳入時、分、秒、微秒
print("當(dāng)前時間:", t)# 當(dāng)前時間: 12:59:59.000059
# 常用屬性
print("時:", t.hour)# 時: 12
print("分:", t.minute)# 分: 59
print("秒:", t.second)# 秒: 59
print("微秒:", t.microsecond)# 微秒: 59
print("最大時間:", t.max)# 最大時間: 23:59:59.999999
print("最小時間:", t.min)# 最小時間: 00:00:00
常用方法
t = datetime.time(hour=12, minute=59, second=59, microsecond=59)# 實例化time對象,傳入時、分、秒、微秒
print("當(dāng)前時間:", t)# 當(dāng)前時間: 12:59:59.000059
# 常用方法
print("返回格式化時間:", t.isoformat())# 格式化時間: 12:59:59.000059
print("從格式化時間轉(zhuǎn)換:", t.fromisoformat('12:00:00'))# 從格式化時間轉(zhuǎn)換: 12:00:00
print("轉(zhuǎn)換為格式化時間:", t.strftime("%Y-%m %H:%M:%S"))# 轉(zhuǎn)換為格式化時間: 1900-01 12:59:59

4.datetime類常用方法或?qū)傩?/h4>

常用屬性
dt = datetime.datetime.now()# 實例化datetime類
print("當(dāng)前日期:", dt)# 當(dāng)前日期: 2023-03-01 15:17:00.350579
# 常用屬性
print("當(dāng)前年份:", dt.year)# 當(dāng)前年份: 2023
print("當(dāng)前月份:", dt.month)# 當(dāng)前月份: 3
print("當(dāng)前日:", dt.day)# 當(dāng)前日: 1
print("時:", dt.hour)# 時: 15
print("分:", dt.minute)# 分: 17
print("秒:", dt.second)# 秒: 0
print("微秒:", dt.microsecond)# 微秒: 350579
print("最大時間:", dt.max)# 最大時間: 9999-12-31 23:59:59.999999
print("最小時間:", dt.min)# 最小時間: 0001-01-01 00:00:00
常用方法
dt = datetime.datetime.now()# 實例化datetime類
print("當(dāng)前日期:", dt)# 當(dāng)前日期: 2023-03-01 15:17:00.350579
# 常用方法
print("今天日期時間:", dt.today())# 今天日期時間: 2023-03-01 15:23:55.703063
print("當(dāng)前日期:", dt.date())# 當(dāng)前日期: 2023-03-01
print("當(dāng)前日期時間的格式化輸出:", dt.isoformat())# 當(dāng)前日期時間的格式化輸出: 2023-03-01T15:23:55.703063
print("當(dāng)前日期的三元組:", dt.isocalendar())# 當(dāng)前日期的三元組: (2023, 9, 3)
print("當(dāng)前日期一周中的第幾天:", dt.isoweekday())# 當(dāng)前日期一周中的第幾天: 3
print("從指定日期時間轉(zhuǎn)換并格式化輸出:", dt.fromisoformat("2023-02-28 19:11:56"))# 從指定日期時間轉(zhuǎn)換并格式化輸出: 2023-02-28 19:11:56
print("從指定時間戳轉(zhuǎn)換并格式化輸出:", dt.fromtimestamp(1677644920))# 從指定時間戳轉(zhuǎn)換并格式化輸出: 2023-03-01 12:28:40
print("從三元組轉(zhuǎn)換并格式化輸出:", dt.fromisocalendar(year=2025, week=4, day=2))# 從三元組轉(zhuǎn)換并格式化輸出: 2025-01-21 00:00:00

5.timedelta類

datetime.timedelta() 類可以傳遞多個參數(shù),用來表示時間間隔,返回形式為標(biāo)準(zhǔn)時間格式:0:00:00

  • days:時間間隔單位為天

  • hour:時間間隔單位為小時

  • minute:時間間隔單位為分鐘

  • second:時間間隔單位為秒

  • milliseconds:時間間隔單位為毫秒

  • microsecond:時間間隔單位為微秒

print(datetime.timedelta(days=3))# 3 days, 0:00:00
print(datetime.timedelta(hours=3))# 3:00:00
print(datetime.timedelta(minutes=10))# 0:10:00
print(datetime.timedelta(milliseconds=5000))# 0:00:05
print(datetime.timedelta(microseconds=5000000))# 0:00:05

三、timeit模塊

timeit 模塊提供了多種方法,可以用來測量 Python 小段代碼執(zhí)行時間。它既可以在命令行界面直接使用,也可以通過導(dǎo)入模塊進行調(diào)用。

timeit 模塊定義了三個實用函數(shù)和一個公共類,分別為timeit.timeit()方法、timeit.repeat()方法、timeit.default_timer()方法、timeit.Timer類。部分源碼如下:

def timeit(stmt="pass", setup="pass", timer=default_timer,
 number=default_number, globals=None):
"""Convenience function to create Timer object and call timeit method."""
return Timer(stmt, setup, timer, globals).timeit(number)

def repeat(stmt="pass", setup="pass", timer=default_timer,
 repeat=default_repeat, number=default_number, globals=None):
"""Convenience function to create Timer object and call repeat method."""
return Timer(stmt, setup, timer, globals).repeat(repeat, number)

從上述源碼中可以看出,無論是timeit還是repeat方法,都是先生成Timer對象,然后調(diào)用了Timer對象的timeit或repeat函數(shù)。

1.timeit.timeit()

timeit.timeit(stmt='pass', setup='pass', timer=, number=1000000)

創(chuàng)建一個 Timer 實例,參數(shù)分別是:

  • stmt(需要測量的語句或函數(shù))

  • setup(初始化代碼或構(gòu)建環(huán)境的導(dǎo)入語句)

  • timer(計時函數(shù))

  • number(每一次測量中語句被執(zhí)行的次數(shù))

注:由于 timeit() 正在執(zhí)行語句,語句中如果存在返回值的話會阻止 timeit() 返回執(zhí)行時間。timeit() 會取代原語句中的返回值。

"""timeit()方法"""
# 統(tǒng)計代碼運行時間
# stmt:要測試的代碼,setup:初始化導(dǎo)入語句、要傳入的變量屬性等
tm1 = timeit.timeit(stmt="[i**2 for i in testlist]", setup="testlist=range(1000)", number=3)# 統(tǒng)計代碼運行時間
print(tm1)# 0.0007954000000000017
# 統(tǒng)計代碼運行時間,setup為復(fù)合語句
tm2 = timeit.timeit(stmt="[i**2 for i in testlist]", setup="a=1000;testlist=range(a)", number=3)# 統(tǒng)計代碼運行時間
print(tm2)# 0.0007886000000000282

2.timeit.repeat()

timeit.repeat(stmt='pass', setup='pass', timer=, repeat=3, number=1000000)

創(chuàng)建一個 Timer 實例,參數(shù)分別是:

  • stmt(需要測量的語句或函數(shù))

  • setup(初始化代碼或構(gòu)建環(huán)境的導(dǎo)入語句)

  • timer(計時函數(shù))

  • repeat(重復(fù)測量的次數(shù))

  • number(每一次測量中語句被執(zhí)行的次數(shù))

"""repeat()方法"""
# 統(tǒng)計代碼運行時間,重復(fù)兩次,返回結(jié)果為列表
# stmt:要測試的代碼,setup:初始化導(dǎo)入語句、要傳入的變量屬性等
tp1 = timeit.repeat(stmt="[i**2 for i in testlist]", setup="testlist=range(1000)", number=3, repeat=5)
print(tp1)# [0.0007632000000000194, 0.0007527999999999979, 0.000754300000000041]
# 統(tǒng)計代碼運行時間,setup為復(fù)合語句
tp2 = timeit.repeat(stmt="[i**2 for i in testlist]", setup="a=1000;testlist=range(a)", number=3, repeat=5)
print(tp2)# [0.0007581999999999867, 0.0007580999999999838, 0.0007536000000000209]

3.timeit.default_timer()

timeit.default_timer()默認(rèn)的計時器,一般是 time.perf_counter(),time.perf_counter() 方法能夠在任一平臺提供最高精度的計時器(它也只是記錄了自然時間,記錄自然時間會被很多其他因素影響,例如計算機的負載)。

4.timeit.Timer類

timeit.Timer是計算小段代碼執(zhí)行速度的類:

timer = timeit.Timer(stmt='pass', setup='pass', timer=)

timer.timeit(number=10)

timer.repeat(number=10, repeat=5)

構(gòu)造函數(shù)需要的參數(shù)有:

  • stmt(需要測量的語句或函數(shù))

  • setup(初始化代碼或構(gòu)建環(huán)境的導(dǎo)入語句)

  • timer(計時函數(shù))

前兩個參數(shù)的默認(rèn)值都是 'pass',timer 參數(shù)是平臺相關(guān)的;前兩個參數(shù)都可以包含多個語句,多個語句間使用分號(;)或新行分隔開。

第一次測試語句的時間,可以使用 timeit() 方法;repeat() 方法相當(dāng)于持續(xù)多次調(diào)用 timeit() 方法并將結(jié)果返回為一個列表。

stmt 和 setup 參數(shù)也可以是可供調(diào)用但沒有參數(shù)的對象,這將會在一個計時函數(shù)中嵌套調(diào)用它們,然后被 timeit() 所執(zhí)行。注意,由于額外的調(diào)用,計時開銷會相對略到。

"""Timer類"""
timer = timeit.Timer(stmt="[i**2 for i in testlist]", setup="a=1000;testlist=range(a)")
# 調(diào)用timeit方法
print(timer.timeit(number=3))# 0.0008310999999999735
# 調(diào)用repeat方法,返回一個時間列表
print(timer.repeat(number=3, repeat=3))# [0.0007549000000000028, 0.0007492000000000054, 0.0007519999999999749]

5.timeit的命令行模式

通過"python -m timeit -h"查看幫助信息:

Tool for measuring execution time of small code snippets.

用于測量小代碼片段執(zhí)行時間的工具。

This module avoids a number of common traps for measuring execution

times. See also Tim Peters' introduction to the Algorithms chapter in

the Python Cookbook, published by O'Reilly.

該模塊避免了許多用于測量執(zhí)行情況的常見陷阱時間。另請參見Tim Peters在由O'Reilly出版的Python Cookbook。

Library usage: see the Timer class.

庫用法:請參閱Timer類。

Command line usage:

命令行用法:

python timeit.py [-n N] [-r N] [-s S] [-p] [-h] [--] [statement]

Options: 選項:

-n/--number N: how many times to execute 'statement' (default: see below)

-r/--repeat N: how many times to repeat the timer (default 5)

-s/--setup S: statement to be executed once initially (default 'pass').

Execution time of this setup statement is NOT timed.

-p/--process: use time.process_time() (default is time.perf_counter())

-v/--verbose: print raw timing results; repeat for more digits precision

-u/--unit: set the output time unit (nsec, usec, msec, or sec)

-h/--help: print this usage message and exit

--: separate options from statement, use when statement starts with -

statement: statement to be timed (default 'pass')

A multi-line statement may be given by specifying each line as a

separate argument; indented lines are possible by enclosing an

argument in quotes and using leading spaces. Multiple -s options are

treated similarly.

多行語句可以通過將每一行指定為獨立論證;縮進的行可以通過括起引號中的參數(shù),并使用前導(dǎo)空格。多個-s選項包括類似地處理。

If -n is not given, a suitable number of loops is calculated by trying

successive powers of 10 until the total time is at least 0.2 seconds.

如果未給定-n,則通過嘗試直到總時間至少為0.2秒。

Note: there is a certain baseline overhead associated with executing a

pass statement. It differs between versions. The code here doesn't try

to hide it, but you should be aware of it. The baseline overhead can be

measured by invoking the program without arguments.

注意:執(zhí)行pass語句。不同版本之間有所不同。這里的代碼無法嘗試隱藏它,但你應(yīng)該意識到它?;€開銷可以是通過調(diào)用不帶參數(shù)的程序來度量。

Classes:

Timer

Functions:

timeit(string, string) -> float

repeat(string, string) -> list

default_timer() -> float

具體用法:

python timeit.py [-n N] [-r N] [-s S] [-p] [-h] [--] [statement]

各個選項的含義:

選項

原型

含義

-n N

--number=N

語句被執(zhí)行的次數(shù)

-r N

--repeat=N

重復(fù)測試的次數(shù)(默認(rèn)5次)

-s S

--setup=S

初始執(zhí)行的語句,例如:要傳入的變量、屬性等

-p

--process

測量進程時間而不是實際執(zhí)行時間(使用 time.process_time() 代替默認(rèn)的 time.perf_counter())

-v

--verbose

打印原始計時結(jié)果;重復(fù)以獲得更多數(shù)字精度

-u

--unit

設(shè)置輸出時間單位(nsec、usec、msec或sec)

-h

--help

輸出幫助信息

--

將選項與語句分開,當(dāng)語句以開頭時使用-

statement

要計時的語句(默認(rèn)為“pass”)

四、時間應(yīng)用場景實踐

1.獲取當(dāng)前時間的時間戳

背景

這種場景主要適用于在接口傳參時的時間日期轉(zhuǎn)換,因為在后端接口傳參中,一般都是用時間戳進行傳遞,而不是傳統(tǒng)的"2023-02-28 19:11:56"格式。例如當(dāng)前有一個新增車輛的接口,其中部分字段涉及到時間日期轉(zhuǎn)換:道路運輸證有效期止、行駛證有效期止:

Python標(biāo)準(zhǔn)庫及第三方庫怎么使用

在頁面上我選擇的都是2023-03-31,但在真實的接口傳參中,會自動將其轉(zhuǎn)換為時間戳的形式:

Python標(biāo)準(zhǔn)庫及第三方庫怎么使用

時間2023-03-31自動轉(zhuǎn)換為了時間戳1680192000000,我們再通過工具將1680192000000轉(zhuǎn)換為正常的格式化時間看看確實為2023-03-31,轉(zhuǎn)換正確:

Python標(biāo)準(zhǔn)庫及第三方庫怎么使用

Python接口調(diào)用

使用Python進行接口測試或模擬接口調(diào)用,也需要傳遞時間戳,Python中time.time()可以直接獲取到當(dāng)前時間的時間戳,但是獲取到的是浮點型的數(shù),可以借助round方法進行四舍五入,然后再*1000,從而精確到毫秒:

# 獲取當(dāng)前時間的時間戳
current_time = time.time()
print(current_time)# 1677635951.946926
timestamp = round(current_time) * 1000
print(timestamp)# 1677635952000

# 將時間戳轉(zhuǎn)換為格式化時間
format_time = time.strftime("%Y-%m-%d %H:%M:%S".format(current_time))
print(format_time)# 2023-03-01 09:59:11

將上述代碼優(yōu)化一下,封裝成函數(shù),直接進行調(diào)用:

def get_current_timestamp():
# 獲取當(dāng)前時間的時間戳
current_time = time.time()
timestamp = round(current_time) * 1000
return timestamp


def timestamp_to_format(timestamp):
# 將時間戳轉(zhuǎn)換為格式化時間
format_time = time.strftime("%Y-%m-%d %H:%M:%S".format(timestamp))
return format_time

2.獲取指定日期時間的時間戳

同樣是模擬接口調(diào)用,但是在造數(shù)據(jù)時,時間字段我想要模擬的不是當(dāng)前時間,而是指定的日期時間,如三小時前、三天前等。以下分別介紹time模塊和datetime模塊如何快速模擬指定時間:

time模擬3小時前的時間戳

我們都知道1小時有3600秒,也就是3600*1000毫秒,所以如果是模擬3小時前的時間戳,則只需要拿到當(dāng)前時間的時間戳-3600*1000*3即可:

def get_current_timestamp():
# 獲取當(dāng)前時間的時間戳
current_time = time.time()
timestamp = round(current_time) * 1000
return timestamp

three_hour_timestamp = get_current_timestamp() - 3600 * 3 * 1000
print(three_hour_timestamp)# 1677630754000

通過站長工具轉(zhuǎn)換時間戳為格式化時間,確實是3個小時前的時間:

Python標(biāo)準(zhǔn)庫及第三方庫怎么使用

datetime模擬三天前的時間戳

使用time模塊處理的話需要經(jīng)過一些計算,而使用datetime模塊的timedelta類處理則簡單得多,直接填寫間隔的時長即可,可以是天、小時、分鐘、秒等,獲取當(dāng)前日期時間的三天前的時間戳,整體過程大致分為以下步驟:

  1. 通過datetime.datetime.now()方法獲取當(dāng)前日期時間;

  2. 用當(dāng)前日期時間減去datetime.timedelta(days=3)返回的時間間隔,得到三天前的日期時間;

  3. 用three_days_ago_date.timestamp()將三天前的日期時間轉(zhuǎn)換為時間戳,注意這里得到的是浮點數(shù),且精確到秒,而后端接口傳參類型是整數(shù)、精確到毫秒,所以我做了int和乘1000的處理。并非所有接口都是這樣,不同的接口視具體傳參要求而定;

# 獲取當(dāng)前日期時間
now_date = datetime.datetime.now()
print(now_date)# 2023-03-01 11:47:06.361630
# 獲取三天前的日期時間
three_days_ago_date = datetime.datetime.now() - datetime.timedelta(days=3)
print(three_days_ago_date)
# 將時間元組轉(zhuǎn)換為時間戳
time_tup = int(three_days_ago_date.timestamp() * 1000)
print(time_tup)# 1677399019273

3.將時間日期格式化輸出

這種情況常常用在文件命名上,比如日志文件,通過文件名,可以區(qū)分是具體是什么日期時間生成的日志。例如:

# 定義log生成路徑、log文件名稱
logTime = time.strftime('%Y_%m_%d-%H_%M_%S', time.localtime(time.time()))
# logPath = os.path.dirname(os.path.abspath('.')) + '\log\'
logPath = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + '\logs\'
logName = logPath + logger + "_" + logTime + '.log'

生成的日志文件如下:

Python標(biāo)準(zhǔn)庫及第三方庫怎么使用

4.計算代碼運行時間

通過time模塊處理

在之前介紹裝飾器的時候,我們有個案例就是通過time模塊來統(tǒng)計代碼運行時間的,示例如下:

def timer(func):
def wrapper(*args, **kwargs):
start_time = time.time()
res = func(*args, **kwargs)
end_time = time.time()
timer = end_time - start_time
print("%s函數(shù)運行共耗時: %s秒" % (func.__name__, timer))
return res

return wrapper


@timer
def run_timer():
time.sleep(1)
print("測試---統(tǒng)計函數(shù)運行時間")


run_timer()
'''
測試---統(tǒng)計函數(shù)運行時間
run_timer函數(shù)運行共耗時: 1.0101909637451172秒
'''
通過timeit模塊處理
import time
import timeit

def run_time():
# 被測函數(shù)
time.sleep(1)
print("used 1 second")


# 統(tǒng)計代碼運行時間
# stmt:要測試的代碼,setup:要傳入的變量屬性等,number:每次測量中語句被執(zhí)行的次數(shù)
tt = timeit.timeit(stmt=lambda: run_time(), number=3)
print(tt)
'''
used 1 second
used 1 second
used 1 second
3.001044
'''
# 統(tǒng)計代碼運行時間,返回結(jié)果為列表
# stmt:要測試的代碼,setup:要傳入的變量屬性等,repeat:重復(fù)測試的次數(shù),number:每次測量中語句被執(zhí)行的次數(shù)
tp = timeit.repeat(stmt="[i * 2 for i in testlist]", setup="testlist=range(1000)", repeat=5, number=1)
print(tp)
'''
[0.00011680000000025004, 9.259999999988722e-05, 8.76000000000765e-05]
'''

“Python標(biāo)準(zhǔn)庫及第三方庫怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!


分享文章:Python標(biāo)準(zhǔn)庫及第三方庫怎么使用
網(wǎng)站路徑:http://weahome.cn/article/ghichc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部