Quando usar os.name, sys.platform ou platform.system?
Até onde eu sei, o Python tem três maneiras de descobrir em que sistema operacional está sendo executado:
os.name
sys.platform
platform.system()
O conhecimento dessas informações geralmente é útil em importações condicionais ou no uso de funcionalidades diferentes das plataformas (por exemplo,time.clock()
no Windows v.s.time.time()
no UNIX).
Minha pergunta é: por que três maneiras diferentes de fazer isso? Quando uma maneira deve ser usada e não outra? Qual caminho é o "melhor" (com maior probabilidade de excluir ou excluir acidentalmente um sistema específico no qual seu programa pode realmente ser executado)?
Parece quesys.platform
é mais específico queos.name
, permitindo distinguirwin32
decygwin
(em vez de apenasnt
) elinux2
dedarwin
(em vez de apenasposix
) Mas se é assim, que dizer da diferença entresys.platform
eplatform.system()
?
Por exemplo, o que é melhor, isso:
import sys
if sys.platform == 'linux2':
# Do Linux-specific stuff
ou isto? :
import platform
if platform.system() == 'Linux':
# Do Linux-specific stuff
Por agora eu vou ficar comsys.platform
, portanto, essa pergunta não é particularmente urgente, mas eu ficaria muito grato por alguns esclarecimentos sobre isso.