309 votes

Comment vérifier si je suis sous Windows sous Python?

J'ai trouvé le module de plate-forme mais il indique qu'il renvoie «Windows» et qu'il renvoie «Microsoft» sur ma machine. Je remarque dans un autre fil de discussion sur stackoverflow qu'il renvoie parfois «Vista».

La question est donc de savoir comment procéder à la mise en œuvre.

 if isWindows():
  ...
 

D'une manière compatible vers l'avant? Si je dois vérifier des éléments tels que 'Vista', cela se brisera à la sortie de la prochaine version de Windows.

475voto

Martin Beckett Points 60406

Module python os

Plus précisément

os.name Nom du module dépendant du système d'exploitation importé. Les noms suivants sont actuellement enregistrés: "posix", "nt", "mac", "os2", "ce", "java", "riscos".

76voto

Mark Rushakoff Points 97350

Êtes-vous à l'aide de platform.system?

system()
 Retourne le nom du système d'exploitation, par exemple, "Linux", "Fenêtres" ou "Java".

 Une chaîne vide est retournée si la valeur ne peut être déterminée.

Si cela ne fonctionne pas, peut-être essayez - platform.win32_ver et si elle ne soulève pas une exception, vous êtes sous Windows, mais je ne sais pas si c'est compatible 64 bits, car il a 32 dans le nom.

win32_ver(version=", version=" dst=", ptype=")
 Obtenez plus d'informations sur la version de la base de Registre Windows
 et le retour d'un n-uplet (version,cdd,ptype), se référant à la version
 nombre, CDD niveau et le type de système d'exploitation (multi/simple
le processeur).

Mais os.name est probablement la voie à suivre, comme d'autres l'ont mentionné.


Pour ce que ça vaut, voici quelques-unes des façons de vérifier pour Windows dans platform.py:

if sys.platform == 'win32':
#---------
if os.environ.get('OS','') == 'Windows_NT':
#---------
try: import win32api
#---------
# Emulation using _winreg (added in Python 2.0) and
# sys.getwindowsversion() (added in Python 2.3)
import _winreg
GetVersionEx = sys.getwindowsversion
#----------
def system():

    """ Returns the system/OS name, e.g. 'Linux', 'Windows' or 'Java'.    
        An empty string is returned if the value cannot be determined.   
    """
    return uname()[0]

51voto

Eevee Points 18333

Vous devriez pouvoir compter sur os .name.

 import os
if os.name == 'nt':
    # ...
 

edit: Maintenant, je dirais que le moyen le plus clair de le faire est via le module de plate - forme , comme indiqué dans l'autre réponse.

41voto

Jochen Ritzel Points 42916

dans sys aussi:

 import sys
# its win32, maybe there is win64 too?
is_winows = sys.platform.startswith('win')
 

18voto

user2683246 Points 101
 import platform
is_windows = any(platform.win32_ver())
 

ou

 import sys
is_windows = hasattr(sys, 'getwindowsversion')
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X