一個小破網(wǎng)站,居然比 Python 官網(wǎng)還牛逼

前兩天,我發(fā)現(xiàn)有個前同事寫的 Shell 腳本經(jīng)常在出問題,考慮這個腳本一直挺不穩(wěn)定的,維護(hù)起來也挺頭疼,原因是 Shell 腳本寫稍微復(fù)雜一點的邏輯,代碼就變得十分臃腫,對比 Python 真的太差勁了。
這個 Shell 腳本中有一個功能是檢查機器上的 rpm 包與中心端的包版本進(jìn)行對比,在本地用 Shell 取 rpm 信息很方便,但要取 rpm 包版本,其實是很難的。
原因是 rpm 包的版本格式分非常多種,根本無法使用簡單的字符串分割來取得具體的版本號,更不用說版本對比。
在重寫這個功能的時候,我在找到了能直接獲取 Linux 機器 rpm 包的 Python 接口庫,這個庫要使用 yum 進(jìn)行安裝
yum install -y rpm-python
裝上之后,就可以直接導(dǎo)入使用。由于不是通過 pip 安裝的,因此 rpm-python 是安裝在 /usr/lib64/python2.7/site-packages/ 目錄下的。
>>> import rpm
>>> rpm.__path__
['/usr/lib64/python2.7/site-packages/rpm']
# 1. 問題來了
接口庫找到了,也安裝上了,可問題是。。。
該怎么用???
你以為百度一下就知道了?
百度出來的,關(guān)于這個庫的介紹幾乎沒有。找到的幾個也不知所云,完全 get 不到邏輯。

于是我嘗試著去該庫的 pypi 和 github 上,希望找到一些 demo 啥的,先入個門。
看來是我想多了,要啥沒啥,一片空白。。


使用 help 查看呢?更是一頭霧水,沒提取到有用的信息

# 2. 神奇的網(wǎng)站
好在 Google 上還是有點用的,它把一個神奇的網(wǎng)站推送到了我的面前,這個網(wǎng)站,就是今天我要為你介紹的主角。
網(wǎng)站的主界面如下,站如其名啊,就是通過 代碼示例 來讓你學(xué)習(xí)各種庫的使用。

整個網(wǎng)站非常的簡潔,只有一個搜索框,在這個搜索框里輸入你想要學(xué)習(xí)的 python 庫,就會立馬為你找到該庫的用法示例,并且會查到當(dāng)前有多少的開源項目在使用它。

很明顯上面的第二個包,才是我們需要的東西,點進(jìn)去后,你會發(fā)現(xiàn)一個全新的世界。
在你面前的是一個又一個的完整的代碼示例,這些示例系統(tǒng)、全面,非常適合初次學(xué)習(xí)階段的理解。
需要強調(diào)的是,這些示例全部摘自開源項目,然后按照每個示例上方的鏈接轉(zhuǎn)到原始項目或源文件。
若你覺得有些示例的代碼寫得不錯,對你也有幫助的,可以給它點個贊。。

就以 rpm 庫為例,來感受一下。
獲取已安裝的所有所有 rpm 包

檢查一個庫是否已經(jīng)安裝過?

如何根據(jù)關(guān)鍵詞搜索指定的包并精準(zhǔn)獲取其版本

如何獲取離線rpm包的信息

還有挺多示例的,這里就不一一列舉了。
參照著上面給出的真實案例,我也整理出我屬于我自己的 rpm 包的用法,比全網(wǎng) 90% 的文章都來得清晰易懂
rpm 包無非就分兩種:
未安裝的 rpm 包
已安裝的 rpm 包
想要獲取這兩種包,方式是不一樣的。
獲取未安裝的 rpm 包信息
>>> import rpm
>>> ts = rpm.TransactionSet()
>>> rpmhdr = ts.hdrFromFdno("/root/librbd1-devel-10.2.10-0.el7.centos.x86_64.rpm")
>>> rpmhdr["NAME"]
'librbd1-devel'
>>> rpmhdr["VERSION"]
'10.2.10'
>>> rpmhdr["RELEASE"]
'0.el7.centos'
>>> rpmhdr["ARCH"]
'x86_64'
獲取已安裝的 rpm 包信息
>>> import rpm
>>> ts = rpm.TransactionSet()
>>> query = ts.dbMatch("name", "librbd1")
>>> query.count()
1
>>> pkg_info = next(query)
>>> pkg_info["NAME"]
'librbd1'
>>> pkg_info["VERSION"]
'12.2.9.1.1'
>>> pkg_info["RELEASE"]
'0.el7.centos'
>>> pkg_info["ARCH"]
'x86_64'
但喝水不忘挖井人,以上都是從這個網(wǎng)站中提煉出來的。
本篇文章的主角并不是 rpm 這個庫的用法,而是上面這個網(wǎng)站。
與 Python 官方網(wǎng)站提供的標(biāo)準(zhǔn)庫示例不一樣(趕緊切點題,不然有人說我標(biāo)題黨了),這個網(wǎng)站 ,不僅涵蓋了 Python 的內(nèi)置庫,只要你能說得上名的 Python 庫(當(dāng)然你自己測試上傳到 pypi 的那種庫肯定不能算是吧)應(yīng)該都在這個網(wǎng)站上找到你對應(yīng)的代碼示例。

全站所收錄的 python 庫大概有將近 2000 個,對應(yīng)大多數(shù)人的開發(fā)應(yīng)該都能滿足了,并且最重要的是,上面的示例全部來源真實的項目,因此更具參考價值。
鏈接:https://www.programcreek.com/python


留言送書


推薦理由:
本書輕理論,重實踐,目的是用低的學(xué)習(xí)成本,讓讀者快速上手Python編程與應(yīng)用開發(fā)。
本書既適合非計算機專業(yè)出身的編程初學(xué)者,也適合即將走上工作崗位的廣大畢業(yè)生,或已經(jīng)有編程經(jīng)驗但想轉(zhuǎn)行做Python應(yīng)用開發(fā)的專業(yè)人士。同時,本書還可以作為廣大職業(yè)院校、計算機培訓(xùn)班的教學(xué)參考用書。
217個實訓(xùn)案例+28集同步教學(xué)視頻+調(diào)試通過的源代碼+數(shù)據(jù)集,將算法與編程進(jìn)行了完美融合。
1. 初學(xué):從人工智能和機器學(xué)習(xí)的基本概念開始介紹,一步步帶領(lǐng)讀者入門。
2.進(jìn)階:從加載數(shù)據(jù)集開始,講解如何對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化、正則化、二值化、特征降維等處理。
3. 深入:通過217個實訓(xùn)案例,詳細(xì)講解回歸、分類、聚類、集成學(xué)習(xí)、深度學(xué)習(xí)、模型評價等。
4. 應(yīng)用:涵蓋圖像識別、語音識別、文本識別、圖像壓縮等4大應(yīng)用領(lǐng)域。
本書的優(yōu)勢:本書以機器學(xué)習(xí)涉及的線性代數(shù)核心知識為重點,進(jìn)行新的嘗試和突破:從坐標(biāo)與變換、空間與映射、近似與擬合、相似與特征、降維與壓縮這5個維度,環(huán)環(huán)相扣地展開線性代數(shù)與機器學(xué)習(xí)算法緊密結(jié)合的核心內(nèi)容。
活動要求及規(guī)則:
我們會在活動截止時從精選留言中選出 六位 粉絲贈送以上任意一本書籍,免費包郵贈送~(注:每人當(dāng)月僅限一次中獎機會,經(jīng)常留言的粉絲獲獎幾率更大哦!)
活動截止時間: 2021 年 8 月 5 日 16:00 整
2、從 B 站火到 GitHub,國人開發(fā)者又一黑科技面世!
3、2021 年 Windows 成了 Python 開發(fā)者的首選
4、用Python手撕一個批量填充數(shù)據(jù)到excel表格的工具,解放雙手!
5、22歲何同學(xué)引爆B站!硬核畢設(shè)樹莓派星軌拍攝儀,上演理工男的終極浪漫
今天因為您的點贊和在看,讓我元氣滿滿!
