Per quanto ne so, Python ha 3 modi per scoprire su quale sistema operativo è in esecuzione:
os.name
sys.platform
platform.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.platform
sia più specifico di os.name
, permettendoti di distinguere win32
da cygwin
(al contrario di just nt
) e linux2
da darwin
(al contrario di just posix
). Ma se è così, che dire della differenza tra sys.platform
e 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