¿Cuándo usar os.name, sys.platform o platform.system?
Hasta donde yo sé, Python tiene 3 formas de averiguar en qué sistema operativo se está ejecutando:
os.name
sys.platform
platform.system()
Conocer esta información a menudo es útil en importaciones condicionales, o usar una funcionalidad que difiere entre plataformas (p. Ej.time.clock()
en Windows v.s.time.time()
en UNIX).
Mi pregunta es, ¿por qué 3 formas diferentes de hacer esto? ¿Cuándo se debe usar una forma y no otra? ¿De qué manera es la 'mejor' (más a prueba de futuro o menos probable que excluya accidentalmente un sistema particular en el que su programa realmente puede ejecutarse)?
Parece quesys.platform
es más específico queos.name
, permitiéndole distinguirwin32
decygwin
(en lugar de solont
) ylinux2
dedarwin
(en lugar de soloposix
) Pero si es así, ¿qué pasa con la diferencia entresys.platform
yplatform.system()
?
Por ejemplo, que es mejor, esto:
import sys
if sys.platform == 'linux2':
# Do Linux-specific stuff
¿o esto? :
import platform
if platform.system() == 'Linux':
# Do Linux-specific stuff
Por ahora me quedaré consys.platform
, por lo que esta pregunta no es particularmente urgente, pero estaría muy agradecido por alguna aclaración al respecto.