python:点分隔版本比较[重复]
Posted
技术标签:
【中文标题】python:点分隔版本比较[重复]【英文标题】:python: dot separated versions comparizon [duplicate] 【发布时间】:2013-11-19 08:23:43 【问题描述】:我正在编写一个脚本,我需要比较二进制文件的版本,所以例如我需要得到 10.2.3 大于 10.1.30 。如果我删除点,我会得到 1023 和 10130,这会颠倒我的比较。
10.2.3 > 10.1.30 == 1023 !> 10130
到目前为止,我出来的唯一解决方案是:
1. do split(".") on version number
2. for each elemet of list i got, check if len() is eq 1 , add one zero from the left.
3. glue all elements together and get int (10.1.30 will became 100130).
4. process second version number same way and compare both as regular ints.
这样:
10.2.3 > 10.1.30 == 100203 > 100130
这是比较版本的唯一方法还是有其他方法?
【问题讨论】:
【参考方案1】:你可以借用distutils
及其后继者用来比较版本号的代码
from distutils.version import StrictVersion # Or LooseVersion, if you prefer
if StrictVersion('10.2.3') > StrictVersion('10.2'):
print "10.2.3 is newer"
【讨论】:
谢谢,如果我需要比较 N 个 uniq 版本号怎么办? distutils.version 有这方面的东西吗? 如何定义超过 2 个项目的比较? 我明白了)。愚蠢的问题。【参考方案2】:你可以试试:
list(map(int, '10.2.3'.split('.'))) > list(map(int, '10.1.30'.split('.')))
Out[216]: True
【讨论】:
非常感谢 Aknur,也会检查一下。以上是关于python:点分隔版本比较[重复]的主要内容,如果未能解决你的问题,请参考以下文章