什么网站啊?!居然比 Python 官网还牛逼

本文介绍了一个实用的Python网站,该网站提供了丰富的rpm包管理库示例。通过真实项目示例,学习者可以快速掌握如何使用Python获取Linux系统上rpm包的信息,包括已安装和未安装的包。

点击上方“编程派”,选择设为“设为星标”

优质文章,第一时间送达!

前两天,我发现有个前同事写的 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 包无非就分两种:

  1. 未安装的 rpm 包

  2. 已安装的 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 个,对应大多数人的开发应该都能满足了,并且最重要的是,上面的示例全部来源真实的项目,因此更具参考价值。

这个网站的地址,直接公众号聊天界面回复「210802」即可获取。

题图:pexels,CC0 授权。

厉害了,Pandas 的表格居然能变得怎么漂亮!


有了这款神器,轻松用 Python 写个 APP


Django 之美


高大上的数学科普视频,敲敲代码就能出来!


????分享、点赞、在看,给个三连击呗????

<think>好的,用户之前已经问过学习爬虫需要哪些基础,现在接着问“Python基础是什么样的?”。我需要确定用户的需求,可能他们想开始学习Python,特别是为了爬虫做准备。 首先,用户可能对Python完全不了解,或者有一些编程经验但想确认Python的基础内容。考虑到之前的回答中提到了Python作为爬虫的首选语言,用户现在想深入了解Python基础,以便打好基础。 接下来,我需要明确Python基础包含哪些内容。通常包括语法、数据类型、流程控制、函数、文件操作、异常处理等。另外,可能需要提到面向对象编程,因为这在后续的库和框架中会用到。同时,用户可能需要了解Python的生态,比如包管理工具pip,以及常用的库,比如requests和BeautifulSoup,但可能在基础部分先不深入这些库,而是先打好语言基础。 还要考虑用户的学习路径,是否需要推荐学习资源或学习方法。比如推荐书籍、在线课程或练习平台。同时,用户可能关心如何实践,比如通过小项目或练习题来巩固基础。 另外,用户可能有兴趣知道学习Python基础需要多长时间,或者有什么常见难点需要注意,比如缩进、动态类型等。需要给出一些学习建议,帮助用户避免常见陷阱。 最后,确保回答结构清晰,分点列出,便于用户理解和后续学习。可能需要将内容分为核心语法、常用数据结构、函数与模块、面向对象、文件与异常处理、工具与生态、学习建议等部分,每个部分简明扼要,举例说明。</think>学习 **Python 基础**是掌握这门语言的核心关键,尤其对于后续开发爬虫、数据分析、Web 开发等领域至关重要。以下是 Python 基础的核心内容和学习要点: --- ### **1. 核心语法与特性** - **简洁易读**:Python 以缩进(空格或 Tab)代替大括号 `{}` 区分代码块,强制代码格式规范。 ```python if 5 > 3: print("正确") # 缩进表示代码块 ``` - **动态类型**:变量无需声明类型,直接赋值即可。 ```python name = "Alice" # 字符串 age = 20 # 整数 price = 3.14 # 浮点数 ``` - **注释**:单行用 `#`,多行用 `'''` 或 `"""`。 ```python # 这是单行注释 ''' 这是 多行注释 ''' ``` --- ### **2. 常用数据类型** | 类型 | 示例 | 说明 | |--------------|------------------------|-------------------------------| | **整数(int)** | `num = 10` | 无小数点的数字 | | **浮点数(float)** | `pi = 3.14` | 含小数点的数字 | | **字符串(str)** | `s = "Hello"` | 文本,可用单/双引号包裹 | | **布尔(bool)** | `is_true = True` | 逻辑值:`True` 或 `False` | | **列表(list)** | `list = [1, "a", True]` | 有序、可修改的集合 | | **元组(tuple)** | `t = (1, "a")` | 有序、不可修改的集合 | | **字典(dict)** | `d = {"name": "Alice"}` | 键值对的无序集合 | | **集合(set)** | `s = {1, 2, 3}` | 无序、不重复元素的集合 | --- ### **3. 流程控制** - **条件语句**:`if-elif-else` ```python score = 85 if score >= 90: print("优秀") elif score >= 60: print("及格") else: print("不及格") ``` - **循环语句**:`for` 和 `while` ```python # for 循环遍历列表 for i in [1, 2, 3]: print(i) # while 循环 count = 0 while count < 3: print(count) count += 1 ``` --- ### **4. 函数与模块** - **函数定义**:`def` 关键字 ```python def add(a, b): return a + b print(add(2, 3)) # 输出 5 ``` - **模块导入**:使用 `import` 调用外部代码 ```python import math print(math.sqrt(16)) # 4.0 ``` --- ### **5. 面向对象编程(OOP)** - **类与对象**:`class` 定义类,`__init__` 为构造函数。 ```python class Dog: def __init__(self, name): self.name = name def bark(self): print(f"{self.name}在叫!") dog = Dog("小黑") dog.bark() # 输出:小黑在叫! ``` --- ### **6. 文件操作与异常处理** - **文件读写**: ```python # 写入文件 with open("test.txt", "w") as f: f.write("Hello World!") # 读取文件 with open("test.txt", "r") as f: content = f.read() print(content) ``` - **异常处理**:`try-except` ```python try: num = 10 / 0 except ZeroDivisionError: print("除数不能为零!") ``` --- ### **7. 常用工具与生态** - **包管理工具**:`pip`(安装第三方库) ```bash pip install requests numpy pandas ``` - **标准库示例**: - `os`:操作系统交互。 - `datetime`:处理日期时间。 - `json`:解析 JSON 数据。 --- ### **8. 学习建议** 1. **动手实践**:通过小项目(如计算器、猜数字游戏)巩固语法。 2. **理解报错信息**:Python 的报错信息清晰,学会根据提示调试代码。 3. **善用资源**: - **书籍**:《Python编程:从入门到实践》《笨办法学Python》 - **在线教程**:[菜鸟教程](https://www.runoob.com/python)、[廖雪峰Python教程](https://www.liaoxuefeng.com) - **练习平台**:LeetCode(简单题)、牛客网、Codewars --- ### **总结** Python 基础的核心是掌握**语法规则、数据类型、流程控制、函数与模块**,并逐步理解面向对象和异常处理。作为爬虫开发的起点,建议先熟练操作字符串、列表、字典,再结合 `requests` 库尝试简单网络请求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值