Per quanto ne so, Python ha 3 modi di scoprire ciò che il sistema operativo è in esecuzione su:Quando utilizzare os.name, sys.platform o platform.system?
os.name
sys.platform
platform.system()
Conoscere queste informazioni è spesso utile in importazioni condizionali o utilizzo di funzionalità diverse da piattaforme (ad esempio time.clock()
su Windows vs time.time()
su UNIX).
La mia domanda è, perché 3 diversi modi di farlo? Quando dovrebbe essere usato un modo e non un altro? In che modo è il "migliore" (la maggior parte a prova di futuro o meno probabilità di escludere accidentalmente un particolare sistema su cui il tuo programma può effettivamente essere eseguito)?
Sembra sys.platform
è più specifico di os.name
, che consente di distinguere win32
da cygwin
(piuttosto che semplicemente nt
), e linux2
da darwin
(piuttosto che semplicemente posix
). Ma se è così, che dire della differenza tra sys.platform
e platform.system()
?
Per esempio, che è meglio, questo:
import sys
if sys.platform == 'linux2':
# Do Linux-specific stuff
o del presente? :
import platform
if platform.system() == 'Linux':
# Do Linux-specific stuff
Per ora sarò attenersi ad sys.platform
, quindi questa domanda non è particolarmente urgente, ma sarei molto grato per alcuni chiarimenti riguardo a questa.
uso 'sys.platform.startswith ('linux') al posto di' sys.platform == 'linux2'' 'per la futura compatibilità – jfs