筆記 python模組速覽

2021-10-10 09:59:42 字數 3083 閱讀 1107

有些東西,可能不經常用,尤其對於像我這種剛學的小夥伴來說更是如此。對於這部分內容可以不會用,但是一定要了解有這個東西,知道這個東西是什麼,能幹什麼,當我需要的時候可以想到,這個東西可以派上用場,到時再深入學習也為時不晚。

目錄

常用內建模組

datetime

collections

base64

struct

hashlib

hmac

itertools

contextlib

urllib

xmlhtmlparser

常用第三方模組

pillow

requests

chardet

psutil

virtualenv

python內建了許多非常有用的模組,無需額外安裝和配置,即可直接使用。

處理日期和時間的標準庫。

可以做:獲取日期和時間

datetime與timestamp的互相轉換

我們把2023年1月1日 00:00:00 utc+00:00時區的時刻稱為epoch time,記為0(2023年以前的時間timestamp為負數),當前時間就是相對於epoch time的秒數,稱為timestamp。計算機實際儲存的值就是timestamp,即想對於2023年1月1日 00:00:00 utc+00:00時區的時刻的秒數。

str與datetime的互相轉換

字串轉換為時間、時間轉換為字串。

本地時間轉換為utc時間

本地時間是指系統設定時區的時間,例如北京時間是utc+8:00時區的時間,而utc時間指utc+0:00時區的時間。

時區轉換

我們可以先通過utcnow()拿到當前的utc時間,再轉換為任意時區的時間。

collections是python內建的乙個集合模組,提供了許多有用的集合類。

namedtuple()

用於建立具有命名字段的元組子類的工廠函式

deque

類似列表的容器,兩端都有快速追加和彈出

chainmap

類似於dict的類,用於建立多個對映的單個檢視

counter

用於計算可雜湊物件的dict子類

ordereddict

記住元素新增順序的dict子類

defaultdict

dict子類呼叫工廠函式來提供缺失值

userdict

包裝字典物件以便於dict子類化

userlist

包裝列表物件以便於列表子類化

userstring

包裝字串物件以便於字串子類化

base64是一種任意二進位製到文字字串的編碼方法,常用於在url、cookie、網頁中傳輸少量二進位制資料。

struct模組來解決bytes和其他二進位制資料型別的轉換。

hashlib提供了常見的摘要演算法,如md5,sha1等等。摘要演算法又稱雜湊演算法、雜湊演算法。它通過乙個函式,把任意長度的資料轉換為乙個長度固定的資料串(通常用16進製制的字串表示)。通過摘要函式f()對任意長度的資料data計算出固定長度的摘要digest,計算f(data)很容易,但通過digest反推data卻非常困難。而且,對原始資料做乙個bit的修改,都會導致計算出的摘要完全不同。因此摘要演算法目的是為了發現原始資料是否被人篡改過。注意摘要演算法不是加密演算法,不能用於加密(因為無法通過摘要反推明文),只能用於防篡改,但是它的單向計算特性決定了可以在不儲存明文口令的情況下驗證使用者口令。

實現了標準的hmac演算法,它利用乙個key對message計算「雜湊」後的hash,使用hmac演算法比標準hash演算法更安全,因為針對相同的message,不同的key會產生不同的hash。

itertools提供了非常有用的用於操作迭代物件的函式。

chain()

可以把一組迭代物件串聯起來,形成乙個更大的迭代器。

groupby()

把迭代器中相鄰的重複元素挑出來放在一起。

用於支援with語句上下文管理的模組。詳情點這裡。

提供了一系列用於操作url的功能(第三方模組requests比這個更強大)。利用程式去執行各種http請求。如果要模擬瀏覽器完成特定功能,需要把請求偽裝成瀏覽器。偽裝的方法是先監控瀏覽器發出的請求,再根據瀏覽器的請求頭來偽裝,user-agent頭就是用來標識瀏覽器的。

在web中應用,但現在用的不多。略

非常方便地解析html,可以把網頁中的文字、影象等解析出來

除了內建的模組外,python還有大量的第三方模組。

基本上,所有的第三方模組都會在pypi - the python package index上註冊,只要找到對應的模組名字,即可用pip安裝。強烈推薦安裝anaconda,安裝後,數十個常用的第三方模組就已經就緒,不用pip手動安裝。

python imaging library,已經是python平台事實上的影象處理標準庫了。pil功能非常強大,但api卻非常簡單易用。

處理url資源特別方便,比內建模組urllib方便。

字串編碼。使用chardet檢測編碼非常容易,chardet支援檢測中文、日文、韓文等多種語言。

獲取系統資訊。可以跨平台使用,支援linux/unix/osx/windows等,是系統管理員和運維小夥伴不可或缺的必備模組。

獲取cpu、記憶體、磁碟、網路、程序資訊

psutil還可以獲取使用者資訊、windows服務等很多有用的系統資訊

virtualenv為應用提供了隔離的python執行環境,解決了不同應用間多版本的衝突問題。

caffe 速覽筆記

blob與tensorflow中的tensor類似,都是用來在節點之間傳遞資料所用,介面也類似,常規的dimension是 資料量n x 通道k x 高度h x 寬度w blob內部存有data和diff兩大塊。前者是傳遞的資料,後者是計算的梯度。由於blob同時存在cpu和gpu,所以有兩種方式來...

Git命令速覽 git筆記

版本控制系統 vcs 在 git 中的絕大多數操作都只需要訪問本地檔案和資源,不用連網。但如果用 cvcs 的話,差不多所有操作都需要連線網路。因為 git 在本地磁碟上就儲存著所有當前專案的歷史更新,所以處理起來速度飛快。對於任何乙個檔案,在 git 內都只有三種狀態 已提交 committed ...

筆記速覽 訊息佇列的問題

總結自 中華石衫 如何保證訊息佇列的高可用啊?缺點 導致系統可用性降低 就kafka來說 ha機制,就是replica副本機制 isr leader 掛了咋辦?broker掛了咋辦?controller掛了咋辦?訊息佇列重複消費?如何保證訊息不被重複消費啊 如何保證訊息消費時的冪等性 原因 任務重啟...