Por lo que yo sé, Python tiene 3 maneras de descubrir qué sistema operativo se ejecuta en:Cuándo usar os.name, sys.platform o platform.system?
os.name
sys.platform
platform.system()
Conocer esta información es a menudo útil en importaciones condicionales, o que usan una funcionalidad que difiere entre plataformas (por ejemplo, time.clock()
en Windows vs time.time()
en UNIX).
Mi pregunta es, ¿por qué 3 formas diferentes de hacer esto? ¿Cuándo debería usarse una vía y no otra? ¿De qué manera es el "mejor" (más a prueba de futuro o menos probable que excluya accidentalmente un sistema en particular en el que se puede ejecutar realmente su programa)?
Parece que sys.platform
es más específica que os.name
, lo que le permite distinguir win32
de cygwin
(en lugar de sólo nt
), y linux2
de darwin
(en lugar de sólo posix
). Pero si eso es así, ¿qué pasa con la diferencia entre sys.platform
y platform.system()
?
Por ejemplo, lo que es mejor, esto:
import sys
if sys.platform == 'linux2':
# Do Linux-specific stuff
o el presente? :
import platform
if platform.system() == 'Linux':
# Do Linux-specific stuff
Por ahora voy a estar pegando a sys.platform
, por lo que esta cuestión no es particularmente urgente, pero yo estaría muy agradecido por alguna aclaración con respecto a esto.
use 'sys.platform.startswith ('linux')' en lugar de 'sys.platform == 'linux2'' para compatibilidad futura – jfs