Python版本號比較函數 LooseVersion 和StrictVersion


第一種比較方法  StrictVersion

StrictVersion是由.將一串帶有預發布標簽的數字分隔為兩個或三個部分的格式,預發布標簽的字母只能是a或者b加數字版本號,而且只能在最末尾。預發布a版本低於b版本,並且預發布版本永遠小於正式發布版本。

合法格式:

0.4       0.4.0  (相同版本)
    0.4.1
    0.5a1     (預發布版本a1,小於0.5,即0.5版本更新)
    0.5b3
    0.5
    0.9.6
    1.0
    1.0.4a3
    1.0.4b1
    1.0.4

非法格式

1           沒有.分隔,需要分隔為2-3部分
    2.7.2.2     被分隔成了4個部分
    1.3.a4      預發布版本號應該在數字后面
    1.3pl1      預發布版本號字母標簽只能是a或者b
    1.3B1       預發布版本號字母標簽只能是a或者b
    1.3c        預發布版本號字母標簽后必須加數字版本號

版本比較

In [1]: from distutils.version import StrictVersion

In [2]: StrictVersion('1.2a3') < StrictVersion('1.2b1')
Out[2]: True

In [3]: StrictVersion('1.2b1') < StrictVersion('1.2')
Out[3]: True

In [4]: StrictVersion('1.2') < StrictVersion('1.2.1')
Out[4]: True

In [5]: StrictVersion('1.2') == StrictVersion('1.2.0')
Out[5]: True

In [6]: StrictVersion('1.2.11') < StrictVersion('1.11')
Out[6]: True

第二種比較方法(LooseVersion):

LooseVersion格式要求和StrictVersion不同,或者說它並沒有任何規定的格式。由一系列數字,相隔時間或字母的字符串組成,並沒有一個嚴格的格式。在進行比較的時候按照數字大小,字符串按字典順序比較。

合法格式

1.5.1
    1.5.2b2
    161
    3.10a
    8.02
    3.4j
    1996.07.12
    3.2.pl0
    3.1.1.6
    2g6
    11g
    0.960923
    2.2beta29
    1.13++
    5.5.kw
    2.0b1pl0

非法格式

並沒有喲

格式比較

In [1]: from distutils.version import LooseVersion

In [2]: LooseVersion('1.6.0x') < LooseVersion('1.20.0x')
Out[2]: True

In [3]: LooseVersion('2.6.0x') < LooseVersion('1.20.0x')
Out[3]: False

In [4]: LooseVersion('1.20.0x') < LooseVersion('1.20.0z')
Out[4]: True

In [5]: LooseVersion('1') < LooseVersion('a')
Out[5]: True


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM