一个小破网站,居然比 Python 官网还牛逼

news/2024/5/9 11:22:38/文章来源:https://blog.csdn.net/weixin_58753619/article/details/122674307

前两天,我发现有个前同事写的 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 个,对应大多数人的开发应该都能满足了,并且最重要的是,上面的示例全部来源真实的项目,因此更具参考价值。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_777429.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员接单网站哪个好?

国内远程工作平台,接单平台 1、CODING 码市 官方网站:https://mart.coding.net 著名的Coding旗下的互联网软件外包服务平台,平台以外包为主。 2、 开源众包 官方网站:https://zb.oschina.net/projects/list.html 开源中国的…

如何从BBC网站学习英语

转载于:https://www.cnblogs.com/yymn/p/4614286.html

Win7用IIS发布网站系统 部署项目

1.首先确保系统上已经安装IIS 【控制面板】→【程序】→【程序和功能】→【打开或关闭Windows功能】 选中Internet 信息服务下面的所有选项,点击确定。 2. 获得发布好的程序文件 若没有发布,则在项目上右击,选择发布。注意发布方法选择文件系…

部署网站上线至服务器(华为云 Centos7.5+宝塔面板)

前言:此文档技术含量较低,适合初学者阅览,大佬们请移步。本人小菜鸡,大佬们轻点喷,公网IP给出,信息安全实验室的大佬们不要入侵俺!!!(写的代码应该有很多的漏…

ASP.net网站访问异常

解决方案 出现这个bug的原因是由于,net.framwork版本问题,以前PC上装的4.0版本,故会报错,安装net.framwork 4.5异常消失。 END! 转载于:https://www.cnblogs.com/changbo/p/5336379.html

在IIS中浏览网站时出现:无法打开登录所请求的数据库 ***,登录失败

在IIS中发布Web应用程序后,浏览网站时出现无法打开登录所请求的数据库 "***",登录失败错误,如下图所示: 解决办法:打开系统Web.Config配置文件,查看数据库连接串是否为Windows身份验证方式&#…

网站实现微信登录之回调函数中登录逻辑的处理--基于yii2开发的描述

上一篇文章网站实现微信登录之嵌入二维码中描述了如何在自己的登录页面内嵌入登录二维码,今天的这篇文章主要是描述下在扫码成功之后微信重定向回网站后登录逻辑的处理,其实也就是验证身份信息,授权用户登录的逻辑。这里说句题外话&#xff0…

据说这是最详细软件测试电商网站测试实战教程总结

目录:导读一、兼容性二、UI测试三、用户体验测试UE四、购物流程及购物规则测试五、支付流程六、订单流程测试七、性能,响应速度测试八、重点(总结)一、兼容性 (1)主要是在浏览器兼容 (2&#x…

chrome无法从该网站添加应用、扩展程序和用户脚本的有效解决方法

解决方案 第一步: 新建一个标签页,在地址栏输入:chrome://flags/#extensions-on-chrome-urls并按回车键 将值改为enabled OK了,就可以完美解决了

OpenCMS模板的导出和OpenCMS网站的导出

1、OpenCMS模板的导出 (1)切换到Administration视图,单击Module Management,如图所示: (2)导出位置:tomcat根目录\webapps\opencms\WEB-INF\packages\modules\文件夹下cn.mysite.tem…

网站开发技巧参考大全

事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcElement.releaseCapture(); 事件按键 event.keyCode event.shiftKey event.altKey event.ctrlKey 事件返回值 event.returnValue 鼠标位置 event.x event.y 窗…

DNS原因导致的不能访问网站问题一例

友情提示:大家可以了解下以下在这次问题解决中用到的一些技术名词:智能DNS和BGP了。双线及策略路由。公司的业务发展很快,在偶的老家郑州市和河南建业合作开了新的项目,而且二七塔附近的华联商厦亦在我们的管理之下。基于此&#…

2020年拟在山东招生普通高校专业(类)选考科目要求 网站数据爬虫实战

需要爬取 1622 个高校的数据 , 序号 ,地区 学校代码 , 学校名称 , 选课科目要求 , 学校网址 。 因为此网站禁用了右键, 所以直接用 python 代码分析 网站html 。 form 表格的 一行 html代码如上 。 都是在 td 标签下, 直接改中国大学排名定向爬虫实例 代码。 (1) 获取 ht…

高并发高流量网站架构

高并发高流量网站架构(转) Web2.0的兴起,掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批新生的网站,也极大的方便了上网的人们。但Web2.0以用户为导向的理念&a…

C# seo测试小工具1:同时更新多网站的博客(csdn,cnblogs,163,sina)

这几天我一个朋友在学seo,老师要求学生们同时发表一篇博客来测试百度的排名系统。所以就有了这个小程序,给同样有这方面需求的朋友们一个参考,下面介绍一下实现方法。 国内的这几个网站都实现了国际通用的博客api:MetaWeblog。通过…

建站手册-浏览器信息:Internet Explorer 浏览器

ylbtech-建站手册-浏览器信息:Internet Explorer 浏览器1.返回顶部 1、http://www.w3school.com.cn/browsers/browsers_internetexplorer.asp2、Internet Explorer 是目前使用最为广泛的因特网浏览器。 Internet Explorer 8 2009 年 3 月 19 日,微软发布…

做网站用UTF-8还是GB2312?

2019独角兽企业重金招聘Python工程师标准>>> 经常我们打开外国网站的时候出现乱码,又或者打开很多非英语的外国网站的时候,显示的都是口口口口口的字符, WordPress程序是用的UTF-8,很多cms用的是GB2312。 ● 为什么有这…

dedecms 后台网站 标题设置

打开文件夹,找到dede/templets/index2.htm,修改第6行就行了 转载于:https://www.cnblogs.com/moguzi12345/p/8124087.html

国内某知名婚恋网站的Kubernetes落地实践

随着Kubernetes的遍地开花,Kubernetes的优势可以说是深入人心,所以,我们也掀起了一场改革,目的就是改变我们以往的运维模式,利用Kubernetes,来实现更高效的交付和更好地提高我们的资源使用率,推…

网站基本标签及css样式简介(3)

CSS层叠样式&#xff1a;一.内部样式表1).行内样式<td style"font-size:30px;">封面回顾</td>...td为行级标签&#xff0c;其他还有&#xff1a;按钮、输入框&#xff0c;范围、图像、超链接、换行标签2).嵌入样式(在<head>标签中实现)<style t…