上篇寫了 Python 開發中經常使用的標準庫,這篇接着寫 Python 開發中經常使用的三方庫。html
大多數三方庫都支持用 pip 包管理工具下載安裝,這極大方便了咱們平常開發須要。python
掌握 Python 的標準庫是基礎,由於大多數三方庫都是在參考基礎和實際開發中衍生出來的副產品。因此想要開發一款本身的三方庫,我以爲有必要先將標準庫掌握好,這樣在真正開發三方庫時能讓你在寫碼的過程當中遊刃有餘。mysql
通常 Python 支持的三方庫都能在 Github 上找到,每一個庫都有 README 文件詳細解釋庫的版本、安裝方式和用法等等。若是有不理解的,應該要學會本身看文檔找答案,實在不行讀源碼。jquery
通常在開發中會用到不少三方庫,下面列舉一些,以此來加深印象。git
支持 Excel 文件庫。這五個庫都支持讀寫 excel 文件,不一樣的是支持版本不一樣,有的也不更新了。從網站能夠看出,openpyxl 庫已經支持多個後綴的 excel 文件,是最新也是最理想可用的庫。github
支持 PDF 文件。PyPDF2 庫是一個純 Python 寫的 PDF 庫,可以拆分、合併、裁剪和旋轉 PDF 文件頁面。支持對 PDF 文件添加客戶數據、查看選項和加密,還能獲取 PDF 文本和元數據以及整合整個文件。web
HTML 轉 PDF。此庫使用 ReportLab 工具將 HTML 文件轉化爲 PDF 文件,目前支持 HTML5 和 CSS2.1(包括一部分 CSS3)。由於是用純 Python 寫的,因此與平臺無關(跨平臺)。redis
YAML 解析器和發射器。算法
結巴中文分詞。jieba 庫支持三種分詞模式:精確模式、全模式和搜索引擎模式。sql
此外,還支持繁體分詞和自定義字典等。jieba 有多種語言實現:Java、C++、Rust、Node.js、Erlang、R、IOS、PHP、.NET(C#)、Go、Android,基本涵蓋了全部編程語言。
Python 圖像庫。pillow 庫繼承自 PIL(Python Imaging Library),由於 PIL 庫僅支持到 Python2.7 版本,庫的始做俑者已經再也不維護更新,因此出現了一批志願者將 PIL 庫從新打形成兼容最新 Python 版本的 pillow 庫。由於功能足夠強大,API 調用也足夠簡單,因此逐漸成爲了事實上官方推薦的 Python 圖像庫。
簡單優雅的 HTTP 庫。requests 能夠說是知名度最高(依據:下載次數)的 HTTP 三方庫,與 Python 內置的 http 基礎庫相比有更強大的功能和易用性,好比能夠輕鬆發送 HTTP/1.1(阮老師講得好) 請求,不須要手動嵌套字符串地址,也不須要手動編碼 PUT
和 POST
數據(如今能夠用 JSON 數據解決),以及各類網絡請求功能。
requests 是很是優秀的庫,建議全部人去讀讀源碼。
HTTP 庫。urllib3 庫是從 Python 標準庫 urllib 繼承出來更強大的版本,支持線程安全、鏈接池、客戶端 SSL/TLS 驗證、文件編碼分步上傳、壓縮編碼、HTTP 和 SOCKS 代理等等。與 requests 同樣提供不少簡潔易用的函數操做,但在性能和擴展上還遠不及 requests 有效率。
HTTP 庫。此庫提供 HTTP 請求實用工具,同上。
HTTP 異步框架。aiohttp 庫的主要特徵是支持客戶端與服務端進行 HTTP 協議通訊、支持客戶端與服務端進行 WebSocket 鏈接、以及爲 Web 服務器提供了中間件和可切換的路由。
HTML/XML 解析庫。BeautifulSoup4 庫經常使用於對 HTML 文件或 XML 文件解析提取有效數據,採集網絡數據時常常須要用到它。它會將文件(頁面)解析成樹結構,以便可以快速查找到對應的標籤或數據。
HTML/XML 解析庫。lxml 與 BeautifulSoup4 同樣都支持 HTML/XML 文件解析,lxml 在文檔中提到本身是功能最豐富且簡潔易用,解析速度快且對內存友好(意思是存儲效率高)。目前來講,不管使用哪一種解析器都比 python 內置的解析器效率高。
BeautifulSoup4 庫支持使用 lxml 解析器。
jquery 插件代碼解析庫。
MySQL 數據庫鏈接器。PyMySQL 是純 python 寫的客戶端鏈接庫,大多數 API 兼容 mysqlclient 和 MySQLdb。
PostgreSQL 數據庫鏈接器。psycopg2 是在第一代 psycopg 的基礎上進一步開發,第一代遵循了 python DB API 2.0 規範,爲多線程應用程序提供了保障。好比實現了基礎的客戶端鏈接、線程安全(多線程可共享同一個鏈接)、支持大量建立和銷燬遊標、支持大量執行 INSERT 和 UPDATE 在內的併發操做。
更進一步,psycopg2 主要是用 C 語言封裝了 libpq 庫,可以使性能和安全有效提高。支持客戶端和服務端進行數據交互、異步通訊、通知以及 COPY TO/COPY FROM
。還支持 python 的許多數據類型,以便對 PostgreSQL 進行匹配,由於足夠靈活,也支持擴展和自適應。
Redis 數據庫鏈接器。這是目前最有名的 redis 數據庫鏈接器,支持最新的 python 和 redis 版本。
mongoDB 數據庫鏈接器。一樣,PyMongo 庫是最有名的 mongoDB 數據庫鏈接器,支持 BSON 格式存儲數據,支持最新的 python 和 mongoDB 版本。
ORM(Object Relational Mapper)框架。Peewee 庫支持對數據庫 ORM 操做,是一個簡單小巧且易用的框架,提供大量的擴展,目前支持 sqlite、mysql 和 postgresql 數據庫。
ORM(Object Relational Mapper)框架。相比於 Peewee,SQLAlchemy 的應用範圍更廣,它提供了企業級持久化模式,在高效訪問數據庫的同時,也爲應用程序開發人員提供 SQL 的全部功能和靈活性。
支付寶簽名認證。支付寶生成預付訂單須要使用 RSA 加密算法 對數據進行加密,這個庫簡化了加密過程。
JWT(JSON Web Token) 令牌實現。此庫用於實現支持 JSON 格式傳輸的 Token 字符串。
數據加密庫。itsdangerous 庫主要用於數據加密,當咱們須要將數據傳輸到不安全的環境中保留時,能夠對返回或響應的數據作校驗,以防止數據被篡改。該庫還支持自定義數據序列化規則、數據壓縮和設置令牌有效時間等。
分佈式任務隊列。celery 是一個簡單、靈活且可靠的,處理大量消息的分佈式系統,而且提供維護這樣一個系統的必需工具。也是一個專一於實時處理的任務隊列,同時也支持任務調度。
celery 庫的功能強大,建議去閱讀官方文檔。
監控和管理(celery)工具。flower 庫是基於 Web 開發的 celery 實時監控和管理工具,目前擁有多種特性,好比支持 celery 事件實時監控、遠程控制、Broker monitoring(中間人監控)、HTTP API 、基礎認證和谷歌的 OpenID 開放受權。
更多詳細資料可查看官方文檔。
編寫 elasticsearch 的高級庫。Elasticsearch 是一個基於 lucene 庫的搜索引擎,提供了一個分佈式、支持多租戶的全文搜索引擎,具備 HTTP Web 接口和無模式 JSON 文檔。目前,elasticsearch 是最受歡迎的企業搜索引擎。
elasticsearch-dsl-py 庫可以用 python 語言編寫和運行 elasticsearch,它是在官方 elasticsearch-py 庫上作二次開發,提供更多簡單高效的功能。
加密工具包。PyCrypto 庫提供各類安全哈希函數(例如 SHA256 和 RIPEMD160)和數據加密算法(例如 AES、DES、RSA、ElGamal)。
SSH(Secure Shell) 模塊。Paramiko 支持 SSH2 安全協議(加密和認證)鏈接遠程機器,與 SSL/TLS 不一樣,SSH2 不須要中央機構派發的階級式簽名證書。SSH2 協議已經替代了 Telnet 和 rsh 協議來實現遠程 Shell 訪問。SSH2 協議還經過加密隧道打開訪問遠程服務的多個通道(例如 SFTP 的工做方式)。
日誌記錄庫。logbook 庫能夠做爲標準庫 logging 的替代品,可以實現更好的安裝、使用、配置和對 web 應用的支持。
單元測試庫。nose2 是繼承自 nose,在此基礎上作二次開發。儘管如此,nose2 也並不支持 nose 的全部功能,具體可看這裏。nose 庫的目的是擴展標準庫 unittest,以便能有更好的易用性和理解性。
單元測試框架。pytest 框架讓編寫小型測試變得簡單,支持擴展對應用程序或庫進行復雜功能測試。
測試代碼覆蓋率。此庫使用了 Python 標準庫中提供的代碼分析工具和追蹤鉤子來肯定哪些代碼行是可執行的,哪些是已執行的。
瀏覽器自動化框架和生態系統。selenium 庫在製做爬蟲工具中常常被用到,主要是封裝了一些工具和庫來實現瀏覽器自動化。selenium 專門爲 W3C WebDriver 規範 提供了基礎結構,實現了對全部 web 瀏覽器平臺兼容且與語言無關的編碼接口。
selenium 是很是優秀的庫,建議閱讀官方文檔.
性能分析工具。lineprofiler 庫可以逐行分析程序性能,主要是對運行時間的詳細描述。
內存分析工具。同上,memoryprofiler 庫可以監視進程的內存消耗,並可逐行分析程序的內存消耗。
2D 繪圖庫。matplotlib 庫以各類硬拷貝格式和跨平臺的交互式環境生成可出版質量的圖形。matplotlib 支持在 python、python 腳本、ipython shell 環境(例如 matlab、mathematica)、web 應用服務器和各類圖像用戶界面工具包。
須要注意的是,此庫再也不支持 python2。
svg 繪圖庫。pygal 庫用於生成動態 svg 圖表。
OpenCV(Open Source Computer Vision Library)跨平臺的計算機視覺庫。OpenCV 是由英特爾公司發起並參與開發,可以用於開發實時的圖像處理、計算機視覺以及模式識別程序等。
提倡開源的世界讓全部人都參與進來,可以列舉的 python 三方庫更是數不勝數。固然,咱們選擇三方庫是在適配需求的場景下利用,這樣遇到問題時也值得花時間讓開源庫獲得更好發展。
注: