Python常用模塊

Python常用模塊

datetime

日期時間類,主要熟悉API,時區的概念與語言無關。

from datetime import datetime as dt

dt.utcnow() # 系統UTC時間
dt.now() # 系統當前時間
dt(2018, 3, 27, 14, 30) # 獲得2018-3-27 14:30對應的datetime對象
dt.now().timestamp() # 秒數1522133962.527885
dt.fromtimestamp(1522133962.527885) # 從秒到datetime對象
dt.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S') # string轉datetime對象
dt.now().strftime('%a, %b %d %H:%M') # datetime轉string

collections

namedtuple

可用於表示簡單隻讀對象。

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y', 'z'])

p = Point(1, 1, 1)
p.x # 1
p.z # 1

p.x = 2 # Error

deque

雙向隊列。

from collections import deque

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

q.append('x')
q.pop() # x

q.append('u')
q.popleft() # a

defaultdict

相對於dict,訪問不存在的屬性時,會返回lambda表達的返回值。

from collections import defaultdict

dd = defaultdict(lambda : None)

dd['x'] = 1
dd['x'] # 1

print(dd['y']) # None

OrderedDict

有序字典,可以保持字典按屬性插入的先後順序。

from collections import OrderedDict

od = OrderedDict()

od['x'] = 1
od['y'] = 2
od['z'] = 3

for item in od:
    print(item) # x y z

Counter

計數器,可理解爲屬性默認值爲0的dict。

from collections import Counter

c = Counter()

c['x'] # 0
c['x'] = 'x'
c['x'] # x

base64

base64編碼,把bytes用ascii編碼的一種常見方法。

import base64

base64.b64encode(b'hello') # b'aGVsbG8='
base64.b64decode(b'aGVsbG8=') # b'hello'

hashlib

常見的摘要算法,如MD5,SHA1等。

import hashlib as hash

md5 = hash.md5()
md5.update('233'.encode('utf-8'))
print(md5.hexdigest()) # e165421110ba03099a1c0393373c5b43

hmac

hmac,類似md5 + salt。

import hmac

password = b'888888'
salt = b'abc'
h = hmac.new(salt, password, digestmod='MD5')
h.hexdigest() # 519151ad14e431254ff684cf4dba2d39

itertools

import itertools

n = 0
for item in itertools.count(1):
    print(item) # 1, 2 ... 10
    n += 1
    if n > 10:
        break

n = 0
for item in itertools.cycle('ABC'):
    print(item) # A, B, C, A ...
    n += 1
    if n > 10:
        break

n = 0
for item in itertools.repeat('A'):
    print(item) # A, A, A ...
    n += 1
    if n > 10:
        break

# 組合多個可迭代對象
for item in itertools.chain('ABC', 'XYZ'):
    print(item) # A, B, C, X, Y, Z

contextlib

with語句所需要的上下文管理器,可藉助contextlib模塊中的contextmanager使用裝飾器模式實現。

from contextlib import contextmanager

@contextmanager
def withable(name):
    yield name
    print('end')

with withable('x') as res:
    print(res) # x, end

urllib

urllib模塊中的request可用於實現http-client相關功能。

from urllib import request

with request.urlopen('https://amsimple.com') as res:
    data = res.read()
    print('Status:', res.status, res.reason)
    for k, v in res.getheaders():
        print('%s: %s' % (k, v))

第三方模塊

  • Pillow:圖片處理
  • requests:比urllib中的request更強大
  • chardet:對字符串進行編碼識別
  • psutil: 更便捷獲取系統相關信息

博客原文

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章