¿Qué necesito ver para ver si estoy en Windows, Unix, etc.?Python: ¿En qué sistema operativo me estoy ejecutando?
Respuesta
>>> import os
>>> print os.name
posix
>>> import platform
>>> platform.system()
'Linux'
>>> platform.release()
'2.6.22-15-generic'
La salida de platform.system()
es el siguiente:
- Linux:
Linux
- Mac:
Darwin
- de Windows:
Windows
Ver:
¿Por qué debería preferir 'platform' a' sys.platform'? – matth
@matth Salida un poco más consistente. es decir, 'platform.system()' devuelve '" Windows "' en lugar de '" win32 "'. 'sys.platform' también contiene' "linux2" 'en versiones anteriores de Python, mientras que contiene' 'linux' 'en las más recientes. 'platform.system()' siempre ha devuelto '' Linux '. – erb
En mac os X, platform.system() siempre devuelve "Darwin"? o hay otro caso posible? –
Dang - Me lbrandy ganó de mano, pero eso no quiere decir que no puedo proporcionarle los resultados del sistema para Vista!
>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'Vista'
... y no puedo creer que nadie de publicar uno para Windows 10 todavía:
>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'10'
Windows 7: 'platform.release()' ''7'' – Hugo
Así que, sí, acabo de ejecutar' platform.release() 'en mi * Windows * * 10 *, y definitivamente me acaba de dar'' 8 ' '. Quizás instalé Python antes de actualizar, ¿pero realmente? – Codesmith
Hubiera pensado que era más probable que se haya actualizado desde Windows 8 (si se trata de una instalación limpia) y lo que Python busque en el registro o lo que quede atrás? – OJFord
Para el registro aquí están los resultados en Mac:
>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'Darwin'
>>> platform.release()
'8.11.1'
Puede también utilizar sys.platform si ya ha importado sys y no desea importar otro módulo
>>> import sys
>>> sys.platform
'linux2'
¿Alguno de los enfoques tiene alguna ventaja, además de tener que importar otro módulo o no? – matth
El alcance es la principal ventaja. Desea la menor cantidad posible de nombres de variables globales. Cuando ya tiene "sys" como nombre global, no debe agregar otro. Pero si aún no usa "sys", usar "_platform" podría ser más descriptivo y menos probable que colisione con otro significado. – sanderd17
hago esto
import sys
print sys.platform
Docs aquí: sys.platform.
Todo lo que necesita es, probablemente, en el módulo sys.
estoy usando la herramienta WLST que viene con WebLogic, y que no aplique el paquete de plataforma.
wls:/offline> import os
wls:/offline> print os.name
java
wls:/offline> import sys
wls:/offline> print sys.platform
'java1.5.0_11'
Aparte de parchear el sistema javaos.py (issue with os.system() on windows 2003 with jdk1.5) (que no puedo hacerlo, tengo que usar WebLogic fuera de la caja), esto es lo que yo uso:
def iswindows():
os = java.lang.System.getProperty("os.name")
return "win" in os.lower()
>>> import platform
>>> platform.system()
en la misma línea ....
import platform
is_windows=(platform.system().lower().find("win") > -1)
if(is_windows): lv_dll=LV_dll("my_so_dll.dll")
else: lv_dll=LV_dll("./my_so_dll.so")
Esto es problemático si está en una Mac ya que platform.system() devuelve "Darwin" en una Mac y "Darwin" .lower(). Find ("win") = 3. – mishaF
/usr/bin/python3.2
def cls():
from subprocess import call
from platform import system
os = system()
if os == 'Linux':
call('clear', shell = True)
elif os == 'Windows':
call('cls', shell = True)
Bienvenido en SO, aquí, es una buena práctica para explicar por qué usar su solución y no solo cómo. Eso hará que su respuesta sea más valiosa y ayudará al lector a tener una mejor comprensión de cómo lo hace. También sugiero que eche un vistazo a nuestras preguntas frecuentes: http://stackoverflow.com/faq. – ForceMagic
Buena respuesta, tal vez incluso a la par con la respuesta original. Pero podrías explicar por qué. – vgoff
Para Jython la única manera de obtener el nombre os he encontrado es comprobar os.name
propiedad Java (tratado con sys
, os
y platform
módulos para Jython 2.5.3 en WinXP):
def get_os_platform():
"""return platform name, but for Jython it uses os.name Java property"""
ver = sys.platform.lower()
if ver.startswith('java'):
import java.lang
ver = java.lang.System.getProperty("os.name").lower()
print('platform: %s' % (ver))
return ver
Si desea que los datos legibles por el usuario, pero todavía detallada, puede utilizar platform.platform()
>>> import platform
>>> platform.platform()
'Linux-3.3.0-8.fc16.x86_64-x86_64-with-fedora-16-Verne'
He aquí algunas llamadas diferentes posibles que puede realizar para identificar dónde se encuentra
import platform
import sys
def linux_distribution():
try:
return platform.linux_distribution()
except:
return "N/A"
print("""Python version: %s
dist: %s
linux_distribution: %s
system: %s
machine: %s
platform: %s
uname: %s
version: %s
mac_ver: %s
""" % (
sys.version.split('\n'),
str(platform.dist()),
linux_distribution(),
platform.system(),
platform.machine(),
platform.platform(),
platform.uname(),
platform.version(),
platform.mac_ver(),
))
Las salidas de este script ejecutadas en algunos sistemas diferentes están disponibles aquí: https://github.com/hpcugent/easybuild/wiki/OS_flavor_name_version
resultados interesantes en Windows 8:
>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'post2008Server'
Editar: Esa es una bug
Si no buscar la versión del kernel, etc, pero en busca de la distribución de Linux es posible que desee utilizar la siguiente
en python2.6 +
>>> import platform
>>> print platform.linux_distribution()
('CentOS Linux', '6.0', 'Final')
>>> print platform.linux_distribution()[0]
CentOS Linux
>>> print platform.linux_distribution()[1]
6.0
en python2.4
>>> import platform
>>> print platform.dist()
('centos', '6.0', 'Final')
>>> print platform.dist()[0]
centos
>>> print platform.dist()[1]
6.0
Obviamente, esto solo funcionará si está ejecutando esto en Linux. Si desea tener más secuencias de comandos genéricas en todas las plataformas, puede mezclar esto con las muestras de código proporcionadas en otras respuestas.
Código de ejemplo para diferenciar sistemas operativos utilizando Python:
from sys import platform as _platform
if _platform == "linux" or _platform == "linux2":
# linux
elif _platform == "darwin":
# MAC OS X
elif _platform == "win32":
# Windows
elif _platform == "win64":
# Windows 64-bit
¿Este código de ejemplo proviene de algún módulo de Python? Esta es la única respuesta que, de hecho, responde la pregunta. –
Para obtener resultados más borrosos, '' _platform.startswith ('Linux') –
respuesta original como se ve aquí http://stackoverflow.com/a/8220141/3286832 – Yannis
Comprobar las pruebas disponibles con plataforma de módulo e imprimir la respuesta fuera para su sistema:
import platform
print dir(platform)
for x in dir(platform):
if x[0].isalnum():
try:
result = getattr(platform, x)()
print "platform."+x+": "+result
except TypeError:
continue
intente esto:
import os
os.uname()
y usted puede hacerlo:
info=os.uname()
info[0]
info[1]
os.uname() ya no funciona a partir de Python 3.5. También –
'os.uname()' no está disponible en Windows: https://docs.python.org/2/library/os.html#os.uname _Availability:. ** recientes versiones de Unix ** _ – ccpizza
Ten cuidado si estás en Windows con Cygwin donde os.name
es posix
.
>>> import os, platform
>>> print os.name
posix
>>> print platform.system()
CYGWIN_NT-6.3-WOW
Para completar, la variable de entorno "OS" parece estar definida en todas partes. En Windows XP/7/8/10 está configurado en "Windows NT". En Linux SuSE SP2 está configurado a "x86-64 linux sles11 [2]". No tengo acceso a máquinas OS-X o BSD, sería interesante verificar también allí.
import os
os_name = os.getenv("OS")
if os_name == "Windows_NT":
# Windows
elif "linux" in os_name:
# Linux
elif ...
También puede usar solo el módulo de plataforma sin importar el módulo os para obtener toda la información.
>>> import platform
>>> platform.os.name
'posix'
>>> platform.uname()
('Darwin', 'mainframe.local', '15.3.0', 'Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64', 'x86_64', 'i386')
Un diseño agradable y ordenado para informar objetivo se puede lograr utilizando esta línea:
for i in zip(['system','node','release','version','machine','processor'],platform.uname()):print i[0],':',i[1]
que da este resultado:
system : Darwin
node : mainframe.local
release : 15.3.0
version : Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64
machine : x86_64
processor : i386
Lo que falta por lo general es la versión del sistema operativo pero debes saber si estás ejecutando windows, linux o mac de una manera indipendent plataforma es utilizar esta prueba:
In []: for i in [platform.linux_distribution(),platform.mac_ver(),platform.win32_ver()]:
....: if i[0]:
....: print 'Version: ',i[0]
Utilice las palabras clave import os
y os.name
.
¿Qué tal una nueva respuesta:
import psutil
psutil.OSX #True
psutil.WINDOWS #False
psutil.LINUX #False
Ésta sería la salida si yo estaba usando OSX
Probablemente la más elegante de todas las respuestas – jsphpl
Si está ejecutando MacOS X y ejecutar platform.system()
se obtiene Darwin porque MacOS X se basa en Sistema operativo Darwin de Apple. Darwin es el kernel de macOS X y es esencialmente macOS X sin la GUI.
- 1. ¿Qué me estoy perdiendo solo ejecutando .Net 2.0 vs 3.5?
- 2. ¿Estoy codificando para un sistema operativo o el procesador?
- 3. ¿Cómo obtengo la ruta de un script de Python en el que me estoy ejecutando?
- 4. ¿Cómo detectar el idioma predeterminado del sistema operativo en python?
- 5. ¿Cómo puedo saber en qué dispositivos/versiones de sistema operativo se está ejecutando mi aplicación iOS?
- 6. ¿Qué versión de JBoss estoy ejecutando?
- 7. ¿Qué sistema operativo móvil debo codificar?
- 8. ¿Cómo puedo encontrar en qué sistema operativo se está ejecutando mi programa Ruby?
- 9. NUnit Assert.Equals ¿Qué me estoy perdiendo?
- 10. Banderas de bits: ¿Qué me estoy perdiendo?
- 11. ¿Cómo puedo verificar si estoy ejecutando Windows en Python?
- 12. ¿qué es un sistema operativo sin tics?
- 13. ¿Cómo puedo usar VBScript para determinar si estoy ejecutando un sistema operativo Windows de 32 o 64 bits?
- 14. ¿Cómo obtener el sistema operativo en el que se está ejecutando PHP?
- 15. Identificando si el sistema operativo es (abierto) SUSE en Python?
- 16. Detectar el sistema operativo
- 17. Detectar sistema operativo en Clojure
- 18. ¿Cómo comprobar si el sistema operativo es Vista en Python?
- 19. ¿Cómo puedo encontrar el sistema operativo actual en Python?
- 20. Cómo determinar el sistema operativo en elisp?
- 21. ¿Qué me estoy perdiendo en esta cadena de predicados?
- 22. Ejecutando la aplicación .NET de 32 bits en sistema operativo de 64 bits, ¿es realmente malo?
- 23. ¿Cómo puedo cambiar las unidades usando el sistema operativo python?
- 24. Sistema operativo de espacio aislado
- 25. ¿Cómo habilita mod_rewrite en cualquier sistema operativo?
- 26. Detectando si estoy ejecutando en SharePoint
- 27. ¿Por qué los subprocesos del sistema operativo se consideran caros?
- 28. Actualizar sistema operativo Android programáticamente
- 29. Determine el sistema operativo en .vimrc
- 30. Ejecutando el comando del sistema en Vala
ver (http://bugs.python.org/issue12326) para más detalles! – arnkore
Aquí hay una pregunta relacionada: [Comprobar el nombre de la distribución de Linux] (http://stackoverflow.com/q/2756737/320399). – blong