常用內建模組

2021-08-15 14:34:47 字數 4958 閱讀 3010

關於python, 一些比較常用的內建模組

加密演算法

urllib

random

timestamp轉換為datetime

from datetime import datetime

t = 1429417200.0

print(datetime.fromtimestamp(t)) #2015-04-19 12:20:00, # 本地時間

print(datetime.utcfromtimestamp(t)) #2015-04-19 04:20:00 #utc時間

時間字串str轉換為 datetime

from datetime import datetime

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

print(cday) #轉換後的datetime是沒有時區資訊的, 2015-06-01 18:19:59

datetime 轉換為 str

from datetime import datetime

now = datetime.now()

print(now.strftime("%a, %b %d %h:%m")) #thu, nov 30 18:21

本地時間轉換為 utc 時間

from datetime import datetime, timedelta, timezone

tz_utc_8 = timezone(timedelta(hours=8)) #建立時區 utc+8:00

now = datetime.now() #datetime.datetime(2017, 12, 1, 18, 20, 10, 904584)

dt = now.replace(tzinfo=tz_utc_8) #強制設定為 utc+8:00

dt#datetime.datetime(2017, 12, 1, 18, 20, 10, 904584, tzinfo=datetime.timezone(datetime.timedelta(0, 28800)))

時區轉換

注意:不是必須從utc+0:00時區轉換到其他時區,任何帶時區的datetime都可以正確轉換,例如上述bj_dttokyo_dt的轉換。

1. namedtuple

from collections import namedtuple

point = namedtuple('point', ['x', 'y'])

p = point(1,2)

p.x #1

isinstance(p, point) #true

isinstance(p, tuple) #true

namedtuple是乙個函式,它用來建立乙個自定義的tuple物件,並且規定了tuple元素個數,並可以用屬性而不是索引來引用 tuple 的某個元素

2. deque
from collections import deque

q = deque(['a', 'b', 'c'])

q #deque(['y', 'a', 'b', 'c', 'x'])

q.pop() #deque(['y', 'a', 'b', 'c'])

q.popleft() #deque(['a', 'b', 'c'])

deque是為了高效實現插入和刪除操作的雙向列表,適合用於佇列和棧,可以在隊尾,隊首,插入,刪除

3. defaultdict
from collections import defaultdict

dd = defaultdict(lambda:'n/a')

dd['key1'] = 'abc'

dd['key1'] #'abc'

dd['key2'] #'n/a'

4. ordereddict
from collections import ordereddict

d = dict([('a', 1), ('b', 2), ('c', 3)]) #

dic = ordereddict() #ordereddict()用來建立乙個空的有序字典

使用 dict 時,key 是無序的。如果要保持 key 的順序,可以用ordereddict。ordereddict,與普通字典不同的是記錄了鍵值對的新增順序。

5. counter
from collections import counter

c = counter()

for ch in

'programming':

c[ch] = c[ch] + 1

c #counter()

counter是乙個簡單的計數器,例如,統計字元出現的個數

1. base64
import base64

base64.b64encode(b'binary\x00string') #b'ymluyxj5ahn0cmluzw==

base64.b64decode(b'ymluyxj5ahn0cmluzw==') #b'binary\x00string'

base64.b64encode(b'i\xb7\x1d\xfb\xef\xff') #b'abcd++//'

base64.urlsafe_b64encode(b'i\xb7\x1d\xfb\xef\xff') #b'abcd--__'

base64.urlsafe_b64decode('abcd--__') #b'i\xb7\x1d\xfb\xef\xff'

base64是一種用64個字元來表示任意二進位制資料的方法

2. hashlib
import hashlib

md5 = hashlib.md5()

md5.update('how to use md5 in python hashlib?'.encode('utf-8'))

print(md5.hexdigest()) #d26a53750bc40b38b65a520292f69306

python的hashlib提供了常見的摘要演算法,如md5sha1等等。md5是最常見的摘要演算法,速度很快,生成結果是固定的128bit 位元組,通常用乙個32位的16進製制字串表示。另一種常見的演算法是sha1sha1的結果是160 bit位元組,通常用乙個40位的16進製制字串表示。

sha1 = hashlib.sha1()

sha1.update('how to use md5 in python hashlib?'.encode('utf-8'))

print(sha1.hexdigest()) #b752d34ce353e2916e943dc92501021c8f6bca8c

3. hmac
import hmac

message = b'hello world!'

key=b'secret'

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

h.hexdigest() #0a0461e10e89506d7c31a145663bed93

python自帶的hmac模組實現了標準的hmac演算法。使用hmac和普通hash演算法非常類似。hmac輸出的長度和原始雜湊演算法的長度一致。需要注意傳入的key和message都是bytes型別,str型別需要首先編碼為bytes

from urllib import request

with request.urlopen('') as f:

data = f.read()

print('status', f.status, f.reason)

for k,v in f.getheaders():

print('%s:%s' % (k,v))

print('data:', data.decode('utf-8'))

urllib提供了一系列用於操作url的功能。urllibrequest模組可以非常方便地抓取url內容,也就是傳送乙個get請求到指定的頁面,然後返回http的響應

from random import randint

x = randint(1, 6) #返回 1~6 內的整數,包括1和6

random包含以各種方式生成隨機數的函式,其中randint()返回乙個位於指定範圍內的整數。

常用內建模組

一.http模組 http.request 從nowapi中找乙個免費介面,進行資料請求 反爬蟲 不可以爬蟲 2.跨域處理 後端api伺服器 node.js中api伺服器的建立,我們使用乙個第三放庫 express 後端解決跨域問題 設定請求頭 使用中介軟體 第三方的包 cors3.後端伺服器 we...

Python常用內建模組

base64是一種用64個字元來表示任意二進位制資料的方法。用記事本開啟exe jpg pdf這些檔案時,我們都會看到一大堆亂碼,因為二進位制檔案包含很多無法顯示和列印的字元,所以,如果要讓記事本這樣的文字處理軟體能處理二進位制資料,就需要乙個二進位製到字串的轉換方法。base64是一種最常見的二進...

python常用內建模組(五)

requests 一 collections 是python內建的乙個集合模組,提供了許多有用的集合類。namedtuple,是乙個函式,用來建立乙個自定義的tuple物件,格式 namedtuple 名稱 屬性list 例如 建立乙個座標為 1,2 的點 from collections impo...