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.namesys.platformplatform.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.

questionAnswers(5)

yourAnswerToTheQuestion