一, 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資料...