一个用于比较版本号的脚本和Python模块。使用它来比较软件包、模块等任何内容的版本字符串。
项目描述
一个用于比较版本号的脚本和Python模块。使用它来比较软件包、模块等任何内容的版本字符串。
自3.0版本起,cmp_version支持所有类型的复杂版本号,包括带有发布版(如$version-5)或纪元(如5:$version)的版本号。
命令行工具
您可以使用提供的cmp-version工具比较两个版本字符串。
如果version1小于/比version2旧,它将打印到stdout “-1”,如果它们相等,则打印“0”,如果version1大于/比version2新,则打印“1”。
示例
$ ./cmp-version 1.0.1b 1.0.1a
1
$ ./cmp-version 1.0.1b 1.0.2
-1
$ ./cmp-version 1.0 1.0.0
0
比较文件名
在不实际扫描包内容的情况下,您可以从脚本中根据文件名比较版本。
示例
$ cmp-version glibc-6.2.1-3.x86_64.rpm glibc-6.2.3-1.x86_64.rpm
-1
方法签名
cmp_version 模块提供了一个单一的方法,即 cmp_version,该方法用于比较两个以“cmp”风格(类似于 strcmp 或 python<3 中的 “cmp” 操作符)表示的版本。
def cmp_version(version1, version2)
‘’’
cmp_version - 比较两个版本字符串,检查哪个表示的版本更“新”(更大)。
请注意,即使两个版本字符串在字符串上不相等,它们在版本上仍然可能相等(例如,1.0.0 与 1.0 相同)
@param version1 <str> - 一个版本字符串
@param version2 <str> - 一个版本字符串
@return <int>
-1 如果 version1 比 version2 更老/更小
0 如果 version1 与 version2 相等
1 如果 version1 比 version2 更新/更大
例如,
cmp_version(‘1.0.5b’,‘1.0.5a’) 会返回 1,因为 1.0.5b 在 1.0.5a 之后。
特殊类型
cmp_version 提供了一个特殊类型,名为“VersionString”,它继承自字符串。所有比较魔法函数都已实现,因此您可以直接比较 VersionString 对象。
示例
>>> x = VersionString('0.1b2')>>> y = VersionString('.2b2')>>>>>> '0.1b2' < '.2b2' # Show that as strings this version compare gives wrong answerFalse
>>> x < y # Show that using VersionString objects, the comparison does workTrue
排序列表
您可以按这种方式对版本列表或包含版本的文件名等进行排序
>>> from cmp\_version import cmp\_version, VersionString>>>>>> x = ['.9a', '0.9', '0.9.0', '1.2c', '1.1b', '1.b4.0']>>> sorted(x, key=VersionString)[‘0.9’,‘0.9.0’,‘.9a’,‘1.1b’,‘1.2c’,‘1.b4.0’]
返回值
当两个版本相等时返回 0,即使字符串不相等(例如,“1.0”与“1.0.0”相同版本)
当 version1 比 version2 更老/更小时返回 -1
当 version1 比 version2 更新/更大时返回 1。
许可
此模块在公共领域发布。
项目详情
cmp_version-3.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3a61ff0052f514f9f5d427034b7be8d0eac30d9884aed4bb28f0a14bdaef8f0f |
|
MD5 | ae83b413c31e78398eaad17b69938af2 |
|
BLAKE2b-256 | 61d2b79dc36a234554319cb1c346340eaaa162101bfe808ce9d68cf02bb4d7f1 |