Comment vérifier le système d'exploitation en Python?

148

Je veux vérifier le système d'exploitation (sur l'ordinateur sur lequel le script s'exécute).

Je sais que je peux utiliser os.system('uname -o')sous Linux, mais cela me donne un message dans la console, et je veux écrire dans une variable.

Ce ne sera pas grave si le script peut dire s'il s'agit de Mac, Windows ou Linux. Comment puis-je le vérifier?

Kolek
la source

Réponses:

287

Vous pouvez utiliser sys.platform:

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

sys.platforma une granularité plus fine que sys.name.

Pour les valeurs valides, consultez la documentation .

Consultez également la réponse à la question «Sur quel système d'exploitation est-ce que j'exécute?»

le loup
la source
8
Notez que dans cygwin, il "cygwin"ne retourne pas "win32"comme on pourrait s'y attendre.
Michał Bentkowski
21
Merci. Quelle est la différence entre Linux et Linux2?
Tharindu Rusira
1
quelle serait la sortie pour BSD?
galois
1
Notez que depuis Python 3.3, "linux2"n'est plus une valeur possible de platform(voir la documentation liée pour corroboration) et donc si vous n'avez besoin que de prendre en charge Python 3.3 et versions ultérieures, vous pouvez supprimer en toute sécurité la clause `or platform ==" linux2 "` de la première condition.
Mark Amery le
23

Si vous voulez savoir sur quelle plateforme vous vous trouvez en dehors de "Linux", "Windows" ou "Darwin" (Mac), sans plus de précision, vous devez utiliser:

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

La platform.systemfonction utilise en unameinterne.

Laurent LAPORTE
la source
1
J'aime cette solution , mais je tiens à souligner que des documents , il déclare qu'il retournera Linux, Windows, Javaou une chaîne vide. devdocs.io/python~3.7/library/platform#platform.system
Brandon Benefield
2
@BrandonBenefield, l'énumération est un exemple de valeurs possibles. Sur les appareils Apple, il renvoie «Darwin».
Laurent LAPORTE
15

Vous pouvez avoir une idée assez grossière du système d'exploitation que vous utilisez en vérifiant sys.platform.

Une fois que vous avez ces informations, vous pouvez les utiliser pour déterminer si appeler quelque chose comme os.uname()est approprié pour recueillir des informations plus spécifiques. Vous pouvez également utiliser quelque chose comme les informations système Python sur les systèmes d'exploitation de type Unix ou pywin32 pour Windows.

Il existe également psutil si vous souhaitez effectuer une inspection plus approfondie sans vous soucier du système d'exploitation.

Nick Bastin
la source
6

Des informations plus détaillées sont disponibles dans le platformmodule .

Sven Marnach
la source
Le platformmodule a- t- il un avantage sys.platform? Quand voudrais-je utiliser quelle approche?
Matth
@matth: Vous obtenez des informations plus détaillées et structurées à partir du platformmodule. Cliquez simplement sur le lien pour la documentation.
Sven Marnach