Soweit ich weiß, hat Python drei Möglichkeiten, um herauszufinden, auf welchem Betriebssystem es ausgeführt wird:
os.name
sys.platform
platform.system()
Die Kenntnis dieser Informationen ist häufig bei bedingten Importen oder bei der Verwendung von Funktionen hilfreich, die sich zwischen den Plattformen unterscheiden (z. B. time.clock()
unter Windows und time.time()
UNIX).
Meine Frage ist, warum 3 verschiedene Möglichkeiten, dies zu tun? Wann sollte ein Weg benutzt werden und nicht ein anderer? Welcher Weg ist der "beste" (am zukunftssichersten oder am wenigsten wahrscheinlich, um ein bestimmtes System, auf dem Ihr Programm tatsächlich ausgeführt werden kann, versehentlich auszuschließen)?
Es scheint sys.platform
spezifischer zu sein als os.name
, so dass Sie win32
zwischen cygwin
(im Gegensatz zu nur nt
) und linux2
von darwin
(im Gegensatz zu nur posix
) unterscheiden können. Aber wenn dem so ist, was ist dann mit dem Unterschied zwischen sys.platform
und platform.system()
?
Was zum Beispiel besser ist:
import sys
if sys.platform == 'linux2':
# Do Linux-specific stuff
oder dieses? ::
import platform
if platform.system() == 'Linux':
# Do Linux-specific stuff
Im Moment bleibe ich dabei sys.platform
, daher ist diese Frage nicht besonders dringend, aber ich wäre sehr dankbar für eine Klarstellung in dieser Hinsicht.
sys.platform.startswith('linux')
anstelle vonsys.platform == 'linux2'
für zukünftige Kompatibilität