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?



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?"


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.


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.


6

Nähere Informationen finden Sie im platformModul .


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.