Wie überprüfe ich das Betriebssystem in Python?

148

Ich möchte das Betriebssystem überprüfen (auf dem Computer, auf dem das Skript ausgeführt wird).

Ich weiß, dass ich unter os.system('uname -o')Linux verwenden kann, aber es gibt mir eine Nachricht in der Konsole und ich möchte in eine Variable schreiben.

Es ist in Ordnung, wenn das Skript erkennen kann, ob es sich um Mac, Windows oder Linux handelt. Wie kann ich das überprüfen?

kolek
quelle

Antworten:

287

Sie können verwenden sys.platform:

from sys import platform
if platform == "linux" or platform == "linux2":
    # linux
elif platform == "darwin":
    # OS X
elif platform == "win32":
    # Windows...

sys.platformhat eine feinere Granularität als sys.name.

Die gültigen Werte finden Sie in der Dokumentation .

Siehe auch die Antwort auf "Auf welchem ​​Betriebssystem laufe ich?"

der Wolf
quelle
8
Beachten Sie, dass es in Cygwin "cygwin"nicht "win32"wie erwartet zurückkehrt.
Michał Bentkowski
21
Vielen Dank. Was ist der Unterschied zwischen Linux und Linux2?
Tharindu Rusira
1
Was wäre die Ausgabe für BSD?
Galois
1
Beachten Sie, dass Python 3.3 "linux2"kein möglicher Wert mehr ist platform(siehe die verknüpften Dokumente zur Bestätigung). Wenn Sie also nur Python 3.3 und höher unterstützen müssen, können Sie die Klausel `oder platform ==" linux2 "` sicher aus der Klausel löschen erste Bedingung.
Mark Amery
23

Wenn Sie wissen möchten, auf welcher Plattform Sie sich unter "Linux", "Windows" oder "Darwin" (Mac) befinden, sollten Sie Folgendes verwenden:

>>> import platform
>>> platform.system()
'Linux'  # or 'Windows'/'Darwin'

Die platform.systemFunktion wird unameintern verwendet.

Laurent LAPORTE
quelle
1
Ich mag diese Lösung aber ich möchte darauf hinweisen , dass von den docs es heißt , dass sie zurückkehren wird Linux, Windows, Javaoder eine leere Zeichenfolge. devdocs.io/python~3.7/library/platform#platform.system
Brandon Benefield
2
@BrandonBenefield, die Aufzählung ist ein Beispiel für mögliche Werte. Auf Apple-Geräten wird "Darwin" zurückgegeben.
Laurent LAPORTE
15

Sie können eine ziemlich grobe Vorstellung von dem Betriebssystem bekommen, das Sie verwenden, indem Sie überprüfen sys.platform.

Sobald Sie diese Informationen haben, können Sie sie verwenden, um festzustellen, ob das Aufrufen von etwas os.uname()geeignet ist, um spezifischere Informationen zu sammeln. Sie können auch Python-Systeminformationen unter Unix-ähnlichen Betriebssystemen oder pywin32 für Windows verwenden.

Es gibt auch psutil, wenn Sie eine eingehendere Prüfung durchführen möchten, ohne sich um das Betriebssystem kümmern zu müssen.

Nick Bastin
quelle
6

Nähere Informationen finden Sie im platformModul .

Sven Marnach
quelle
Hat das platformModul einen Vorteil gegenüber sys.platform? Wann würde ich welchen Ansatz verwenden wollen?
Matth
@matth: Sie erhalten detailliertere, strukturierte Informationen aus dem platformModul. Klicken Sie einfach auf den Link für die Dokumentation.
Sven Marnach