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 suele ser útil en importaciones condicionales o en el uso de funciones que difieren entre plataformas (por ejemplo, time.clock()
en Windows frente a time.time()
en UNIX).
Mi pregunta es, ¿por qué 3 formas diferentes de hacer esto? ¿Cuándo se debe utilizar una forma y no otra? ¿Cuál es la "mejor" (la más preparada para el futuro o la que es menos probable que excluya accidentalmente un sistema en particular en el que su programa puede ejecutarse)?
Parece que sys.platform
es más específico que os.name
, lo que le permite distinguir win32
de cygwin
(en oposición a solo nt
) y linux2
de darwin
(en oposición a solo posix
). Pero si es así, ¿qué pasa con la diferencia entre sys.platform
y platform.system()
?
Por ejemplo, cuál 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 atendré sys.platform
, por lo que esta pregunta no es particularmente urgente, pero estaría muy agradecido por alguna aclaración al respecto.
sys.platform.startswith('linux')
lugar desys.platform == 'linux2'
para compatibilidad futura