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
.
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
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
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.
jochen ritzel
en el sistema también:
import sys
# its win32, maybe there is win64 too?
is_windows = sys.platform.startswith('win')
usuario2683246
import platform
is_windows = any(platform.win32_ver())
o
import sys
is_windows = hasattr(sys, 'getwindowsversion')
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
sobreisWindows
.– fénix
13 de enero de 2019 a las 12:56