Maison >développement back-end >Tutoriel Python >Comment comparer de manière fiable les chaînes de version en Python ?

Comment comparer de manière fiable les chaînes de version en Python ?

DDD
DDDoriginal
2024-11-11 07:45:03639parcourir

How do I reliably compare version strings in Python?

Comparaison des chaînes de versions en Python

Lorsque vous travaillez avec des répertoires contenant plusieurs versions du même logiciel, il est crucial d'identifier et d'utiliser uniquement la dernière version. Cela nécessite de comparer les numéros de version, ce qui peut être difficile car les comparaisons de chaînes peuvent ne pas donner des résultats précis.

Comparaisons spécifiques au package

Python fournit une solution standardisée pour comparer les chaînes de version. en utilisant le module packaging.version. La classe Version prend en charge l'ordre de style PEP 440, qui s'aligne sur les conventions utilisées par les packages Python modernes.

from packaging.version import Version

version1 = Version("2.3.1")
version2 = Version("10.1.2")

if version1 < version2:
    print("Version 1 (2.3.1) is older than Version 2 (10.1.2).")

Cette approche fournit une méthode fiable et cohérente pour comparer les chaînes de version dans les packages Python.

Comparaisons héritées

Bien que packaging.version soit recommandé, une méthode obsolète existe sous la forme de distutils.version. Cependant, cette méthode n'est pas documentée et est conforme à la norme PEP 386, désormais remplacée, ce qui la rend incompatible avec les pratiques actuelles de gestion des versions Python.

from distutils.version import LooseVersion, StrictVersion

version1 = LooseVersion("2.3.1")
version2 = LooseVersion("10.1.2")

if version1 < version2:
    print("Version 1 (2.3.1) is older than Version 2 (10.1.2).")

Il est important de noter que LooseVersion traite les versions PEP 440 comme « non strictes » et n'adhère pas à la même logique de comparaison de versions que Version. De plus, StrictVersion considère les versions PEP 440 comme invalides et génère une erreur lorsqu'elle est utilisée avec de telles versions.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn