¿Cómo verifico si estoy ejecutando Windows en Python? [duplicate]

4 minutos de lectura

avatar de usuario
gman

Encontré el módulo de plataforma pero dice que devuelve ‘Windows’ y está devolviendo ‘Microsoft’ en mi máquina. Me doy cuenta en otro hilo aquí en stackoverflow que a veces devuelve ‘Vista’.

Entonces, la pregunta es, ¿cómo implementar?

if isWindows():
  ...

¿De una manera compatible hacia adelante? Si tengo que buscar cosas como ‘Vista’, se romperá cuando salga la próxima versión de Windows.


Nota: Las respuestas que afirman que esta es una pregunta duplicada en realidad no responden a la pregunta. isWindows. Responden a la pregunta “qué plataforma”. Dado que existen muchos sabores de ventanas, ninguno de ellos describe exhaustivamente cómo obtener una respuesta de isWindows.

  • Similar a stackoverflow.com/questions/196930/…

    – monje

    25 de agosto de 2009 a las 1:27

  • “Debería haber una, y preferiblemente solo una, forma obvia de hacerlo”. Por desgracia, Python nos da al menos tres formas…

    – John Fouhy

    25 de agosto de 2009 a las 1:35

  • Liendre: Según PEP8 deberías preferir usar el nombre is_windows sobre isWindows.

    – fénix

    13 de enero de 2019 a las 12:56

avatar de usuario
Martín Beckett

Pitón sistema operativo módulo

Específicamente para Python 3.6/3.7:

os.name: El nombre del módulo dependiente del sistema operativo importado. Actualmente se han registrado los siguientes nombres: ‘posix’, ‘nt’, ‘java’.

En su caso, desea verificar ‘nt’ como os.name producción:

import os

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

También hay una nota sobre os.name:

Ver también sys.platform tiene una granularidad más fina. os.uname() proporciona información de versión dependiente del sistema.

los plataforma El módulo proporciona comprobaciones detalladas de la identidad del sistema.

  • ‘nt’ es el valor para windows

    – caray

    26 de febrero de 2014 a las 15:12

  • ¿Qué devuelve Linux normalmente? posix?

    –Andi Jay

    18/04/2014 a las 17:41

  • @AndiJay: sí, ¡pero debería ser lo suficientemente fácil de probar!

    – Martín Beckett

    18/04/2014 a las 17:42

  • @MartinBeckett – No necesariamente. Es posible que no tenga una máquina que ejecute Linux disponible.

    – El arte de la guerra

    5 de enero de 2015 a las 18:49

  • @ArtOfWarfare no necesitas una máquina;) onlinegdb.com/HyhJEzdX4 (Bueno, tal vez en 2015)

    – arrendajo

    25 de enero de 2019 a las 4:44

avatar de usuario
marca rushakoff

Estas usando platform.system?

 system()
        Returns the system/OS name, e.g. 'Linux', 'Windows' or 'Java'.

        An empty string is returned if the value cannot be determined.

Si eso no funciona, tal vez intente platform.win32_ver y si no genera una excepción, está en Windows; pero no sé si es compatible con 64 bits, ya que tiene 32 en el nombre.

win32_ver(release="", version='', csd='', ptype="")
        Get additional version information from the Windows Registry
        and return a tuple (version,csd,ptype) referring to version
        number, CSD level and OS type (multi/single
        processor).

Pero os.name es probablemente el camino a seguir, como han mencionado otros.


Por lo que vale, estas son algunas de las formas en que verifican Windows en 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]

  • En una máquina de 64 bits, con Windows 7 (SO de 64 bits), este es el resultado: Python 3.1.1 (r311:74483, 17 de agosto de 2009, 16:45:59) [MSC v.1500 64 bit (AMD64)] en win32 >>> print(sys.platform) win32 >>> platform.win32_ver() (‘post2008Server’, ‘6.1.7100’, ”, ‘Multiprocessor Free’) Tenga en cuenta que la compilación lo llama explícitamente win32.

    – Francisco

    25 de agosto de 2009 a las 21:17

  • Vaya, pensé que la salida se habría formateado mejor. Espero que puedas leerlo de todos modos.

    – Francisco

    25 de agosto de 2009 a las 21:18

  • Esta debería ser la respuesta aceptada.

    – Marco Sila

    12 de agosto de 2021 a las 16:45

avatar de usuario
Eevee

Deberías poder confiar en sistema operativo.nombre.

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

editar: ahora diría que la forma más clara de hacer esto es a través del plataforma módulo, según la otra respuesta.

avatar de usuario
jochen ritzel

en el sistema también:

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

avatar de usuario
usuario2683246

import platform
is_windows = any(platform.win32_ver())

o

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

¿Ha sido útil esta solución?