題圖:漫威宇宙英雄
Python的簡潔性,不僅僅在於其語法簡單,還有各種python庫函數的支持,為大家節省了大量的時間和精力,所以網上有人戲稱python的編程者為調包俠。但是你知道全球最受歡迎的python庫嘛?今天小編就從PYPI網站的過去365天的python庫下載量上,來看一下全球最火的22個python庫。
01.Urllib3
Urllib3在過去365天中,下載量達到了9.55億次。Urllib3是一個功能強大的,用於http客戶端的python庫,相比於python標準庫中的urllib庫,Urllib3提供了更全面的特性,包括線程安全,客戶端SSL/TLS驗證等,不僅如此,Urllib3廣泛的被其他庫依賴,有接近1200個庫依賴Urllib3庫。Urllib3的使用也非常的簡單,如下圖所示:
圖中我們創建請求對象,然後請求www.baidu.com網站的信息,輸出狀態碼和返回的數據信息。
02.six庫
six庫是對於python2和python3的兼容庫,使用six庫可以使寫的代碼不用進行修改就能在python2或者python3的環境下進行運行,如下圖所示:
我們可以看到,six庫對Python2和Python3的名字等做了統一,比如在Python2中,字符串的類型使unicode,而在python3中,字符串的類型是str,Python3叫,那麼就可以使用six.string_types的類型。如果運行在Python2上,six. string_types就是unicode,如果運行在Python3上,six. string_types就是str類型。但是由於python2已經停止維護,所以six函數庫的熱度也將會在未來下降。
03.botocore、s3transfer庫
這裡botocore和s3transfer都與亞馬遜網頁服務(AWS)支持相關。Botocore是boto3庫的基礎庫,而boto3則是允許使用者在編寫軟體時使用亞馬遜服務,例如亞馬遜的S3服務等。而s3transfer則是用於管理亞馬遜S3傳輸的python庫。因此同樣被boto3庫所依賴。
上圖所示的程序中,我們首先創建一個s3服務,然後查看所有的Bucket內容,最後我們使用s3服務上傳了一個圖片文件。
04.requests
對於requests函數庫,想必大家都不會陌生,requests庫使得我們對於網頁的請求變得很簡單。由於requests使用更加簡單,便捷,因此在實際的應用中,大家更趨向於使用requests庫而不是urllib3。
上圖中我們利用requests庫來請求百度的首頁,並輸出狀態碼和網頁原始碼。
05.python-dateutil
python-dateutil模塊是對於python內置庫datetime的擴展和增強,示例功能如下圖所示:
上述程序中,我們通過操控dateutil庫中的relativedelta來實現輸出去年的今天功能,並通過parse模塊來將字符串轉化為datetime類型的日期。
06.pip庫
大家對於python庫的安裝,想必大都用過pip進行安裝,pip是Python官方推薦的包管理工具,大家在使用pip安裝的時候,可以通過pip install <特定的包>進行在線的安裝,也可以先下載特定包的whl文件,然後通過pip install <xxx.whl>的方式,離線安裝特定的包。而進行卸載的時候,可以通過pip uninstall <特定的包>進行卸載。如下圖所示:
07.certifi庫
瀏覽器在進行網頁瀏覽的時候,需要在瀏覽器和網頁伺服器之間建立加密連接,而SSL就是用於這一用途,通過SSL連接可以保護在每次交互期間交換敏感的數據,例如我們通過某寶進行網頁交易的時候,對於密碼等信息的傳遞。
而在進行驗證的過程中,需要在客戶端安裝根證書。那麼certifi庫的作用是什麼呢,當我們去爬取網頁的時候,有時候會遇到 SSL:CERTIFICATE_VERIFY_FAILED的錯誤,這就是SSL驗證錯誤,遇到這種錯誤的話,我們可以利用certifi庫進行解決,如下圖所示。
上圖中通過certifi軟體包使用Mozilla的證書來進行證書的驗證。從而解決SSL驗證報錯的問題。
08.idna庫
idna庫在我們日常的編程中,很難遇到,因為它解決的問題我們幾乎遇不到。idna是一種在應用程式中的國際化域名協議,用於處理包含非ASCII字符的域名機制。由於瀏覽器和郵件等不支持除了ASCII碼以外的其他字符,這對於很多國家,例如咱們中國、德國、法國等非英語國家來說,非常的不方便,所以idna的主要功能就是將國際的unicode域名和ASCII字符串進行相互的轉換。如下圖所示:
上圖中我們分別實現了將國際的unicode域名轉化為ASCII字符串,並實現了逆轉換。
09.pyyaml
pyyaml庫是針對於yaml文件進行處理的庫,經常用於對於程序中的一些配置信息的讀寫和存儲。yaml同json文件類似,也是一種配置文件。下圖展示的是利用pyyaml庫對yaml文件進行讀寫操作。
10.chardet庫
對於字符串的編碼問題,一直是很難處理的一個問題,雖然python提供了str和bytes的數據類型,並且可以通過encode()和decode()方法來轉換字符串的編碼方式,但是對於不知道編碼類型的情況下,很難準確的進行解碼操作。
所以chardet庫就排上了用場。chardet用來對輸出字符串的編碼類型進行判斷,並輸出編碼類型的判斷信心和字符串的語言類型。如下圖所示:
上圖中,我們可以發現,使用chardet可以很方便的進行檢測編碼。獲取到編碼後,再轉換為str類型,就可以方便的進行後續處理。
以上就是小編對於PYPI中下載量前十位的python庫的介紹,通過上面的介紹,我們可以發現,在平時的編程中,我們很少單獨import上述模塊進行編程,甚至我們都沒有聽說過上面的某些庫,而像是大家喜聞樂見的NumPy(排名23),Pandas(排名38)等庫,排名卻很靠後。這是為什麼呢?
這裡其實很好解釋,因為上述的前十下載量的python庫,都有很多的python庫需要它們的支持,雖然模塊很小,但卻是很多python庫不可缺少的依賴庫,在安裝的時候都需要被下載安裝,所以它們的下載量就會非常的多,想必大家在日常的庫安裝時,都或多或少的有些體會。
通過小編的介紹,大家可以看到python的函數庫中雖然有的不是很出名,但是卻默默的發揮著自己巨大的作用,成為python編程中不可或缺的一環。真可謂:別看模塊小,用處真不少!
近期熱門:
還在做重複的勞動,不如用Python自動生成Excel以郵件發送
獨家秘籍,50行代碼教你買哪只黃金股
簡單幾步,100行代碼用Python畫一個蝙蝠俠的logo
N年Python老司機,血淚總結新手常見10大錯誤
學Python真香!我用100行代碼做了個網站,幫人PS旅行圖片,賺個雞腿吃!
點擊閱讀原文,原創400篇乾貨文章