Per quanto ne so, Python ha 3 modi per scoprire su quale sistema operativo è in esecuzione:
os.namesys.platformplatform.system()
La conoscenza di queste informazioni è spesso utile nelle importazioni condizionali o nell'utilizzo di funzionalità che differiscono tra le piattaforme (ad esempio time.clock()su Windows rispetto time.time()a UNIX).
La mia domanda è: perché 3 modi diversi per farlo? Quando dovrebbe essere usato un modo e non un altro? Qual è il modo "migliore" (più a prova di futuro o meno probabile che escluda accidentalmente un particolare sistema su cui il tuo programma può effettivamente essere eseguito)?
Sembra che sys.platformsia più specifico di os.name, permettendoti di distinguere win32da cygwin(al contrario di just nt) e linux2da darwin(al contrario di just posix). Ma se è così, che dire della differenza tra sys.platforme platform.system()?
Ad esempio, che è meglio, questo:
import sys
if sys.platform == 'linux2':
# Do Linux-specific stuff
o questo? :
import platform
if platform.system() == 'Linux':
# Do Linux-specific stuff
Per ora mi atterrò sys.platform, quindi questa domanda non è particolarmente urgente, ma sarei molto grato per alcuni chiarimenti in merito.
sys.platform.startswith('linux')invece disys.platform == 'linux2'per compatibilità futura