Pelo que eu sei, o Python tem três maneiras de descobrir em que sistema operacional está sendo executado:
os.name
sys.platform
platform.system()
Conhecer essas informações geralmente é útil em importações condicionais ou no uso de funcionalidades que diferem entre as plataformas (por exemplo, time.clock()
no Windows x time.time()
UNIX).
Minha pergunta é: por que três maneiras diferentes de fazer isso? Quando uma maneira deve ser usada e não outra? Qual maneira é a 'melhor' (mais preparada para o futuro ou menos provável de excluir acidentalmente um sistema específico no qual seu programa pode realmente ser executado)?
Parece que sys.platform
é mais específico do que os.name
, permitindo a você distinguir win32
de cygwin
(em oposição a apenas nt
) e linux2
de darwin
(em oposição a apenas posix
). Mas se for assim, que tal a diferença entre sys.platform
e platform.system()
?
Por exemplo, o que é melhor, este:
import sys
if sys.platform == 'linux2':
# Do Linux-specific stuff
ou isto? :
import platform
if platform.system() == 'Linux':
# Do Linux-specific stuff
Por enquanto, irei me limitar a sys.platform
, então esta questão não é particularmente urgente, mas eu ficaria muito grato por alguns esclarecimentos a respeito disso.
sys.platform.startswith('linux')
vez desys.platform == 'linux2'
para compatibilidade futura