Pour autant que je sache, Python a 3 façons de savoir sur quel système d'exploitation fonctionne:
os.name
sys.platform
platform.system()
Connaître ces informations est souvent utile dans les importations conditionnelles, ou en utilisant des fonctionnalités qui diffèrent entre les plates-formes (par exemple time.clock()
sous Windows et time.time()
sous UNIX).
Ma question est, pourquoi 3 façons différentes de faire cela? Quand faut-il utiliser un moyen et pas un autre? Quelle est la «meilleure» méthode (la plus à l'épreuve du temps ou la moins susceptible d'exclure accidentellement un système particulier sur lequel votre programme peut réellement fonctionner)?
Il semble que ce sys.platform
soit plus spécifique que os.name
, vous permettant de distinguer win32
de cygwin
(par opposition à juste nt
) et linux2
de darwin
(par opposition à juste posix
). Mais si tel est le cas, qu'en est-il de la différence entre sys.platform
et platform.system()
?
Par exemple, ce qui est mieux, ceci:
import sys
if sys.platform == 'linux2':
# Do Linux-specific stuff
ou ca? :
import platform
if platform.system() == 'Linux':
# Do Linux-specific stuff
Pour l'instant, je sys.platform
m'en tiendrai, donc cette question n'est pas particulièrement urgente, mais je serais très reconnaissant d'avoir des éclaircissements à ce sujet.
sys.platform.startswith('linux')
au lieu desys.platform == 'linux2'
pour une compatibilité future