跳转到主要内容

一个用于比较版本号的脚本和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 answer

False

>>> x < y # Show that using VersionString objects, the comparison does work

True

排序列表

您可以按这种方式对版本列表或包含版本的文件名等进行排序

>>> 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 (20.5 kB 查看哈希)

上传时间

由以下机构支持

AWSAWS云计算和安全赞助商 DatadogDatadog监控 FastlyFastlyCDN GoogleGoogle下载分析 MicrosoftMicrosoftPSF赞助商 PingdomPingdom监控 SentrySentry错误日志 StatusPageStatusPage状态页