Python 廖 之常用內建模組

2021-09-12 10:44:26 字數 2870 閱讀 7946

一, datetime

1. datetime是python處理日期和時間的標準庫

2. from datetime import datetime

datetime是模組,該模組還包含乙個datetime類。

3.常用操作:

>>> from datetime import datetime

>>> #獲取當前日期和時間

>>> now=datetime.now()

>>> print(now)

2019-03-12 08:48:56.186838

>>> print(type(now))

>>> #通過引數指定某個日期和時間

>>> dt=datetime(2015,4,19,12,20,12)

>>> print(dt)

2015-04-19 12:20:12

>>> #將datetime型別轉換為timestamp

>>> dt.timestamp()

1429417212.0

>>> #將timestamp型別轉換為datetime

>>> ts=dt.timestamp()

>>> print(datetime.fromtimestamp(ts))

2015-04-19 12:20:12

>>> #將timestamp轉換為utc標準時區時間

>>> print(datetime.utcfromtimestamp(ts))

2015-04-19 04:20:12

>>> #將字串處理為datetiem型別

>>> cday=datetime.strptime('2015-6-1 18:19:59','%y-%m-%d %h:%m:%s')

>>> print(cday)

2015-06-01 18:19:59

>>> #將datetime 轉換為 str

>>> now=datetime.now()

>>> print(now.strftime('%a,%b %d %h:%m'))

tue,mar 12 09:05

>>> #對日期時間進行加減

>>> from datetime import datetime,timedelta

>>> now+timedelta(hours=10)

datetime.datetime(2019, 3, 12, 19, 5, 12, 894703)

>>> now-timedelta(days=1)

datetime.datetime(2019, 3, 11, 9, 5, 12, 894703)

>>> #本地時間轉換為utc時間

>>> #datetime型別有個時區屬性tzinfo

>>> from datetime import datetime,timedelta,timezone

>>> tz_utc_8=timezone(timedelta(hours=8))

>>> now

datetime.datetime(2019, 3, 12, 9, 5, 12, 894703)

>>> dt=now.replace(tzinfo=tz_utc_8)

>>> dt

datetime.datetime(2019, 3, 12, 9, 5, 12, 894703, tzinfo=datetime.timezone(datetime.timedelta(0, 28800)))

>>> #時區轉換

>>> #一般做法是先拿到當前的utc時間,再轉換為任意時區的時間

>>> utc_dt=datetime.utcnow().replace(tzinfo=timezone.utc)

>>> print(utc_dt)

2019-03-12 01:13:31.002193+00:00

>>> #轉換時區為北京時間

>>> bj_dt=utc_dt.astimezone(timezone(timedelta(hours=8)))

>>> print(bj_dt)

2019-03-12 09:13:31.002193+08:00

>>> 

二, hmac

1. 使用雜湊演算法對資料進行加密,通過校驗資料的雜湊值,可以驗證資料是否有效。

2. 但黑客有可能通過彩虹表根據雜湊值反推原始口令,所以我們對雜湊值再設定口令的方式,進行加密增強。

好處:(1)增加乙個salt可以使得相同的輸入也能得到不同的雜湊。

(2)加salt的雜湊就是:計算一段message的雜湊時,根據不同的口令計算出不同的雜湊。要驗證雜湊值,必須同時提供正確的口令。

其中帶salt的演算法的標誌性演算法就是hmac演算法: keyed-hashing for message authentication。即通過乙個標準演算法,在計算雜湊的過程中,把key混入計算過程中。

hmac演算法針對所有雜湊演算法都通用。

3.  示例**:

準備原始訊息message,隨機key,雜湊演算法

>>> import hmac

>>> message=b'hello,world!'

>>> key=b'secret'

>>> h=hmac.new(key,message,digestmod='md5')

>>> h.hexdigest()

'21db988f124ebc9fade5492afb9df52d'

>>> 

hmac輸出的長度和原始雜湊演算法的長度一致。需要注意傳入的key和message都是bytes型別,str型別需要首先編碼為bytes

三.  itertools

該python的內建模組itertools提供了

Python常用內建模組之collections

collections是python內建的乙個集合模組,提供了許多有用的集合類。1.namedtuple namedtuple是乙個函式,它用來建立乙個自定義的tuple物件,並且規定了tuple元素的個數,並可以用屬性而不是索引來引用tuple的某個元素。這樣一來,我們用namedtuple可以很...

Python常用內建模組之contextlib

任何物件,只要正確實現了上下文管理,就可以用於with語句。實現上下文管理是通過enter和exit這兩個方法實現的。例如,下面的class實現了這兩個方法 class query object def init self,name self.name name def enter self pri...

Python常用內建模組之json

json資料就是遵循一種格式的文字資料,用來使 標準化,前後端互動最好的資料格式之一。json資料就是個字串,可以表示python中的資料,比如可以把dict,list等資料統統轉化成json字串,方便交流。json模組四種常用方式 帶s的 json.loads 把json字串轉化為python資料...