隱藏的寶藏,13 個不可忽視的優秀 Python 庫

es8207 7年前發布 | 14K 次閱讀 Python Python開發

作為一門語言,你知道 Python 是如何獲得現在的成功的嗎? 不妨去看看它大量的庫吧,不管是原生的,還是第三方的,可能會有所收獲。

有這么多的庫,也就不奇怪為什么有的很多人用,有的卻沒有引起多少人注意。 而且,專注于一個領域的程序員往往并不知道那些看起來是為其他工作類型創建的庫能給他們帶來什么好處。

這里有 13個你可能已經忽略,但絕對值得你的注意的優秀的 Python 庫。 是時候給這些隱藏的寶藏一些關注了。

1、Pillow

簡介:圖像“無痛”處理庫,易用版的 PIL。

亮點:大多數執行過圖像處理的 Pythonist 應該會熟悉PIL(Python 圖像庫),但 PIL 有不少缺點和限制,并且很少更新。Pillow 的目標是比 PIL 更容易使用,并通過最小的變化與 PIL 代碼兼容。 擴展包括用于與本機 Windows 的映像功能和 Python Tcl/Tk-backed Tkinter GUI 包。

Pillow 在2017年初發布了 4.0 版本,增加了許多變化,主要是針對內部結構,但同時也更新了 Pillow 使用 的 FreeType 和 OpenJpeg 等最新版本的依賴庫。

2、Gooey

簡介:一條命令,將命令行程序變成一個 GUI 程序。

亮點:Gooey 論證了 argparse命令行解析庫期望的參數,并把它們作為 GUI 形式呈現給用戶,所有選項都使用適當的控件(例如多選項參數的下拉列表等)進行標記和顯示。 假設你已經在使用 argparse,只需要很少的附加編碼 - 一個單獨的 include 和一個單獨的 decorator ,就能使其工作。

3、Peewee

簡介:一個輕量級的 ORM,支持 SQLite、MySQL 和 PostgreSQL,提供多種擴展。

亮點:ORMs 目前并沒有什么很大的聲譽,有些人寧愿把圖式模型放在數據庫端做。 但一個結構良好的 ORM 對于不想去觸碰數據庫的開發人員來說,是一個十分不錯的選擇。Peewee 模型易于構建、連接和操作,并且內置了許多常見的查詢操作函數(如分頁)。還有豐富的功能可作為加載項,包括其他數據庫的擴展、測試工具 - 甚至 ORM haters 可能會很愛的一個功能 - 模式遷移系統。

4、Scrapy

簡介:一個快速、高級的屏幕抓取及 web 爬蟲框架。

亮點:Scrapy 保持整個爬取過程簡單。 創建一個類,并定義你要刪除的項目的類型,并編寫一些關于如何從頁面中提取數據的規則。結果將以 JSON、XML、CSV 或許多其他的格式導出。收集的數據可以保存為 raw,也可以在導入時進行清理。 此外,Scrapy 可以擴展允許許多其他行為,例如網站登錄處理、會話 cookie 處理。 圖像也可以被 Scrapy 自動提取并與被抓取的內容相關聯。

5、Apache Libcloud

簡介:一個為各種云設計的 Python 庫,通過單一、一致和統一的 API 訪問各個云提供商。

亮點:如果上面關于 Apache Libcloud 的描述沒有讓你有摩拳擦掌想去體驗的沖動,沒關系。 云提供商都喜歡以他們自己的方式做事情 - 有時巧妙,有時不是 - 所以有一個統一的機制來處理幾十個提供商和相關的方法來操縱他們的資源是一個福音。 API 可用于計算、存儲、負載平衡和 DNS,支持 2.x 和 3.x 的 Python 風格。 對于那些為了額外的性能使用 Python 的 PyPy 版本的,也能被很好地支持。

6、Pygame

簡介:一個高可移植性的游戲開發模塊。

亮點:如果你認為除了身處游戲開發世界的,其他人不會想要這樣的框架,那還請再重新思考一下。 Pygame 提供了一個方便的選項來處理許多面向 GUI 的行為:繪制畫布和 sprite 圖形、處理多聲道聲音、處理窗口和點擊事件、 碰撞檢測等等。 不是每個應用,或者可以說不是每個 GUI 應用,在使用 Pygame 構建時都能受益,但仔細看看它提供了什么,你可能會感到驚訝。

7、NumPy

簡介:科學計算和數學工作基礎包,包括統計學、線性代數、矩陣數學、金融操作等等。

亮點:Quant 和 bean 計數器已經了解 NumPy 并且喜歡它,但 NumPy 的數學 'n' 統計的應用范圍比你想象的更廣。 例如,它是向多維數組添加對 Python 支持的最簡單、最靈活的方法之一。 NumPy 提供了許多高級的數值編程工具,如:矩陣數據類型、矢量處理,以及精密的運算庫,專為進行嚴格的數字處理而產生,和稀疏矩陣運算包Scipy 配合使用更加方便。

8、Sh

簡介:一個完備的 subprocess 替代庫,能調用 subprocess 中的任意外部程序,并將結果返回到 Python 應用。

亮點:在任何兼容 Posix 的系統上,Sh 都是一個神器。 這意味著在這些平臺上可用的所有命令行程序都可以使用 Python。 你不僅不再需要重新造輪子,還不用再為如何優雅地添加該功能到你的應用上而努力。 值得注意的是:該庫對于通過此庫傳遞的參數沒有清理界限,請確保不要將原始用戶輸入傳遞。

9、Python-docx

簡介:以編程方式創建和操縱 Microsoft Word .docx 文件。

亮點:理論上,編寫用于創建和操縱 XML-style Microsoft Word 文檔的腳本應該很容易。 但在實踐中,由于 .docx 格式的內部復雜性,其實還真沒那么簡單。 Python-docx 允許通過提供一種高級的、編程的方式來創建 .docx 文件,從而完成所有的相關操作。

文本、圖像、樣式和文檔都可以通過庫的 API 添加和更改。 該庫還允許更改現有文檔。不過某些功能仍然不受支持, 例如不能添加或更改標題和腳注 - 但 Python-docx 盡最大努力保留了這些東西,即便它們還不能被操縱。

10、PyFilesystem

簡介:一個為所有文件系統提供的通用 Pythonic 接口。

亮點:PyFilesystem 背后的基本理念非常簡單:“以同樣的方式抽象整個文件系統”。它是文件系統的抽象層。實際上,任何包含文件和目錄的東西(硬盤、壓縮文件、FTP服務器等等)都可以封裝成一個共同的接口,甚至彼此疊加組合。使用這個模塊,你可以不需要知道文件確切的物理位置。

除了使編寫用于操作文件的跨平臺代碼變得更容易外,PyFilesystem 還省去了將來自標準庫(主要是 os 和 io)的不同部分的東西拼湊在一起的步驟。

11、EbookLib

簡介:一個用于處理 EPUB2 / EPUB3 和 Kindle 格式圖書的電子書庫。

亮點:創建電子書通常需要使用各種命令行或其它工具, EbookLib 提供了管理工具和 API 來簡化該過程。 它適用于 EPUB2 和 EPUB3 文件,與 Kindle 的支持正在開發中。

提供圖像和文本(后者以HTML格式)后,你可以將這些片段組裝成一個電子書,包括章節、嵌套目錄條目、圖像、HTML標記等。 還支持封面、書脊和樣式表數據。 插件系統允許第三方擴展。

如果你不需要像 EbookLib 這樣樣的東西,可以看看 Mkepub ,它提供基本的電子書裝配功能,整個庫只有幾千字節,但也包含添加圖像到文檔的功能。 Mkepub 的一個小缺點是它需要 Jinja2,而后者又需要   MarkupSafe 庫。

12、Cython

簡介:Python 的 C 語言擴展工具,使用類型混合使 Python 編譯成 C 模塊來獲得性能的提升。

亮點:Python 有很好的便利性,但這種方便是以性能為代價的。 C 是運行時性能的黃金標準(限制程序集),但可能難以處理。 Cython 對著二者進行挖掘 - 不僅提供一個 Python 訪問 C 庫的方便選項,還允許 Python 代碼轉換為高性能 C 代碼。 它在科學計算中廣泛使用,但它也可以用于各種應用的加速。

這個轉換過程中的最好的部分是你不必一次做所有事情。 可以先從 Python 代碼開始,使用 Cython 編譯它,以獲得適度的性能提升。 為了進一步加速,再可以使用類型注釋來裝飾變量和函數,這個過程不會比使用 Python 的 PEP 484 類型提示系統更復雜(盡管 Cython 的語法不同)。

13、Behold

簡介:一款強大的支持 print-style 的調試工具。

亮點:對于大多數語言來說,有一個很簡單的調試方法:插入 in-line "print" 語句。 Python 也不例外,即使是在大型項目,也有不少人這么做。 但簡單的 print-debugging,很難在大型、多模塊的項目中獲得有用的結果。

Behold 提供了一個用于通過 print 語句進行上下文調試的工具包。 它允許對輸出施加統一的外觀,對結果進行標記,以便可以通過搜索或過濾器對其進行排序。并且跨模塊提供上下文,以便可以在另一個模塊中正確調試來自某個模塊的函數。Behold 可以處理許多常見的 Python 特定場景,如 printing 對象的內部字典、揭露嵌套的屬性、存儲和重用結果、在調試過程中的其他點進行比較等等。

 

 

來自:https://my.oschina.net/editorial-story/blog/834779

 

 本文由用戶 es8207 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!