一个小破网站,居然比 Python 官网还牛逼
前两天,我发现有个前同事写的 Shell 脚本经常在出问题,考虑这个脚本一直挺不稳定的,维护起来也挺头疼,原因是 Shell 脚本写稍微复杂一点的逻辑,代码就变得十分臃肿,对比 Python 真的太差劲了。
这个 Shell 脚本中有一个功能是检查机器上的 rpm 包与中心端的包版本进行对比,在本地用 Shell 取 rpm 信息很方便,但要取 rpm 包版本,其实是很难的。
原因是 rpm 包的版本格式分非常多种,根本无法使用简单的字符串分割来取得具体的版本号,更不用说版本对比。
在重写这个功能的时候,我在找到了能直接获取 Linux 机器 rpm 包的 Python 接口库,这个库要使用 yum 进行安装
yum install -y rpm-python
装上之后,就可以直接导入使用。由于不是通过 pip 安装的,因此 rpm-python 是安装在 /usr/lib64/python2.7/site-packages/
目录下的。
>>> import rpm
>>> rpm.__path__
['/usr/lib64/python2.7/site-packages/rpm']
# 1. 问题来了
接口库找到了,也安装上了,可问题是。。。
该怎么用???
你以为百度一下就知道了?
百度出来的,关于这个库的介绍几乎没有。找到的几个也不知所云,完全 get 不到逻辑。
于是我尝试着去该库的 pypi 和 github 上,希望找到一些 demo 啥的,先入个门。
看来是我想多了,要啥没啥,一片空白。。
使用 help
查看呢?更是一头雾水,没提取到有用的信息
# 2. 神奇的网站
好在 Google 上还是有点用的,它把一个神奇的网站推送到了我的面前,这个网站,就是今天我要为你介绍的主角。
网站的主界面如下,站如其名啊,就是通过 代码示例 来让你学习各种库的使用。
整个网站非常的简洁,只有一个搜索框,在这个搜索框里输入你想要学习的 python 库,就会立马为你找到该库的用法示例,并且会查到当前有多少的开源项目在使用它。
很明显上面的第二个包,才是我们需要的东西,点进去后,你会发现一个全新的世界。
在你面前的是一个又一个的完整的代码示例,这些示例系统、全面,非常适合初次学习阶段的理解。
需要强调的是,这些示例全部摘自开源项目,然后按照每个示例上方的链接转到原始项目或源文件。
若你觉得有些示例的代码写得不错,对你也有帮助的,可以给它点个赞。。
就以 rpm
库为例,来感受一下。
获取已安装的所有所有 rpm 包
检查一个库是否已经安装过?
如何根据关键词搜索指定的包并精准获取其版本
如何获取离线rpm包的信息
还有挺多示例的,这里就不一一列举了。
参照着上面给出的真实案例,我也整理出我属于我自己的 rpm 包的用法,比全网 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'
但喝水不忘挖井人,以上都是从这个网站中提炼出来的。
本篇文章的主角并不是 rpm
这个库的用法,而是上面这个网站。
与 Python 官方网站提供的标准库示例不一样(赶紧切点题,不然有人说我标题党了),这个网站 ,不仅涵盖了 Python 的内置库,只要你能说得上名的 Python 库(当然你自己测试上传到 pypi 的那种库肯定不能算是吧)应该都在这个网站上找到你对应的代码示例。
全站所收录的 python 库大概有将近 2000 个,对应大多数人的开发应该都能满足了,并且最重要的是,上面的示例全部来源真实的项目,因此更具参考价值。
链接:https://www.programcreek.com/python
留言送书
推荐理由:
本书轻理论,重实践,目的是用低的学习成本,让读者快速上手Python编程与应用开发。
本书既适合非计算机专业出身的编程初学者,也适合即将走上工作岗位的广大毕业生,或已经有编程经验但想转行做Python应用开发的专业人士。同时,本书还可以作为广大职业院校、计算机培训班的教学参考用书。
217个实训案例+28集同步教学视频+调试通过的源代码+数据集,将算法与编程进行了完美融合。
1. 初学:从人工智能和机器学习的基本概念开始介绍,一步步带领读者入门。
2.进阶:从加载数据集开始,讲解如何对数据进行标准化、正则化、二值化、特征降维等处理。
3. 深入:通过217个实训案例,详细讲解回归、分类、聚类、集成学习、深度学习、模型评价等。
4. 应用:涵盖图像识别、语音识别、文本识别、图像压缩等4大应用领域。
本书的优势:本书以机器学习涉及的线性代数核心知识为重点,进行新的尝试和突破:从坐标与变换、空间与映射、近似与拟合、相似与特征、降维与压缩这5个维度,环环相扣地展开线性代数与机器学习算法紧密结合的核心内容。
活动要求及规则:
我们会在活动截止时从精选留言中选出 六位 粉丝赠送以上任意一本书籍,免费包邮赠送~(注:每人当月仅限一次中奖机会,经常留言的粉丝获奖几率更大哦!)
活动截止时间: 2021 年 8 月 5 日 16:00 整
2、从 B 站火到 GitHub,国人开发者又一黑科技面世!
3、2021 年 Windows 成了 Python 开发者的首选
4、用Python手撕一个批量填充数据到excel表格的工具,解放双手!
5、22岁何同学引爆B站!硬核毕设树莓派星轨拍摄仪,上演理工男的终极浪漫
今天因为您的点赞和在看,让我元气满满!