Что мне нужно посмотреть, чтобы понять, нахожусь ли я в Windows или Unix и т.д.?
>>> import os
>>> print os.name
posix
>>> import platform
>>> platform.system()
'Linux'
>>> platform.release()
'2.6.22-15-generic'
Вывод platform.system()
выглядит следующим образом:
Linux
Darwin
Windows
См: platform - Access to underlying platform's identifying data
Черт - lbrandy опередил меня, но это не значит, что я не могу предоставить вам системные результаты для Vista!
>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'Vista'
...и я не могу поверить, что никто еще не опубликовал результаты для Windows 10:
>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'10'
Для справки вот результаты на Mac:
>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'Darwin'
>>> platform.release()
'8.11.1'
Типовой кодекс, чтобы дифференцировать OS' s использование питона:
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
Вы можете также использовать ['sys.platform'] (https://docs.python.org/library/sys.html#sys.platform), если Вы уже импортировали 'sys' и Вас don' t хотят импортировать другой модуль
>>> import sys
>>> sys.platform
'linux2'
Если Вы хотите пользователя удобочитаемые данные, но все еще подробный, Вы можете использовать platform.platform ()
>>> import platform
>>> platform.platform()
'Linux-3.3.0-8.fc16.x86_64-x86_64-with-fedora-16-Verne'
Here' s несколько различных возможных требований Вы можете сделать, чтобы определить, где Вы
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(),
))
Продукция этого сценария работала на нескольких различных системах (Linux, Windows, Солярис, МАКОС) и архитектура (x86, x64, Itanium, PC власти, sparc) доступно здесь: https://github.com/hpcugent/easybuild/wiki/OS_flavor_name_version
Сервер Ubuntu 12.04, например, дает:
Python version: ['2.6.5 (r265:79063, Oct 1 2012, 22:04:36) ', '[GCC 4.4.3]']
dist: ('Ubuntu', '10.04', 'lucid')
linux_distribution: ('Ubuntu', '10.04', 'lucid')
system: Linux
machine: x86_64
platform: Linux-2.6.32-32-server-x86_64-with-Ubuntu-10.04-lucid
uname: ('Linux', 'xxx', '2.6.32-32-server', '#62-Ubuntu SMP Wed Apr 20 22:07:43 UTC 2011', 'x86_64', '')
version: #62-Ubuntu SMP Wed Apr 20 22:07:43 UTC 2011
mac_ver: ('', ('', '', ''), '')
Как насчет нового ответа:
import psutil
psutil.MACOS #True (OSX is deprecated)
psutil.WINDOWS #False
psutil.LINUX #False
Это было бы продукцией, если бы я использовал MACOS
Я использую инструмент WLST, который идет с weblogic и этим doesn' t осуществляют пакет платформы.
wls:/offline> import os
wls:/offline> print os.name
java
wls:/offline> import sys
wls:/offline> print sys.platform
'java1.5.0_11'
Кроме внесения исправлений системы javaos.py (выпускают с os.system () на окнах 2003 с jdk1.5) (который я can' t делают, я должен использовать weblogic из коробки), это - то, что я использую:
def iswindows():
os = java.lang.System.getProperty( "os.name" )
return "win" in os.lower()
Для Jython единственный способ получить имя рта, которое я нашел, состоит в том, чтобы проверить 'os.name' Явскую собственность (попробованный 'sys', 'ртом' и модулями 'платформы' для Jython 2.5.3 на 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
/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)
Я начал немного более систематический листинг того, какие ценности Вы можете ожидать использовать различные модули (не стесняйтесь редактировать и добавлять Вашу систему):
''' os.name posix sys.platform Linux platform.system () Linux sysconfig.get_platform () linux-x86_64 platform.machine () x86_64 platform.architecture () (' 64bit' ' ') '''
(с 32-битной колонкой, бегущей в 32-битной подсистеме)
os.name nt nt sys.platform win32 win32 platform.system () Windows Windows sysconfig.get_platform () выигрывают-amd64 win32 platform.machine () AMD64 AMD64 platform.architecture () (' 64bit' ' WindowsPE') (' 64bit' ' WindowsPE')
os.name posix posix sys.platform msys msys platform.system () MSYS_NT-10.0 MSYS_NT-10.0-WOW sysconfig.get_platform () msys-2.11.2-x86_64-msys-2.11.2-i686 platform.machine () x86_64 i686 platform.architecture () (' 64bit' ' WindowsPE') (' 32bit' ' WindowsPE')
os.name nt nt sys.platform win32 win32 platform.system () Windows Windows sysconfig.get_platform () mingw mingw platform.machine () AMD64 AMD64 platform.architecture () (' 64bit' ' WindowsPE') (' 32bit' ' WindowsPE')
os.name posix posix sys.platform cygwin cygwin platform.system () CYGWIN_NT-10.0 CYGWIN_NT-10.0-WOW sysconfig.get_platform () cygwin-3.0.1-x86_64-cygwin-3.0.1-i686 platform.machine () x86_64 i686 platform.architecture () (' 64bit' ' WindowsPE') (' 32bit' ' WindowsPE')
'''
Некоторые замечания:
Чтобы соответствовать Вашей системе, просто управляйте этим сценарием (и, пожалуйста, приложите результаты здесь, отсутствуя:)
''' от будущее импортируют print_function рот импорта импорт sys платформа импорта импорт sysconfig
печать (" os.name " os.name) печать (" sys.platform " sys.platform) печать (" platform.system () " platform.system ()) печать (" sysconfig.get_platform () " sysconfig.get_platform ()) печать (" platform.machine () " platform.machine ()) печать (" platform.architecture () " platform.architecture ()) '''
Предостерегитесь если you' ре на Windows с Cygwin, где 'os.name' - 'posix'.
>>> import os, platform
>>> print os.name
posix
>>> print platform.system()
CYGWIN_NT-6.3-WOW
Интересные результаты на окнах 8:
>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'post2008Server'
Отредактируйте: That' s [ошибка] (http://bugs.python.org/issue16176)
Если Вы не поиск ядерной версии и т.д., но поиск распределения Linux Вы можете хотеть использовать следующее
в 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
в python2.4
>>> import platform
>>> print platform.dist()
('centos', '6.0', 'Final')
>>> print platform.dist()[0]
centos
>>> print platform.dist()[1]
6.0
Очевидно, это будет работать, только если Вы управляете этим на Linux. Если Вы хотите иметь больше универсального сценария через платформы, Вы можете смешать это с кодовыми образцами, данными в других ответах.
попробуйте это:
import os
os.uname()
и Вы можете сделать его:
info=os.uname()
info[0]
info[1]
Есть 3 способа получить OS у Питона, каждого с его собственным про и недостатками:
Метод 1
>>> import sys
>>> sys.platform
'win32' # could be 'linux', 'linux2, 'darwin', 'freebsd8' etc
Как это работает (источник): Внутренне это называет API OS, чтобы получить название OS, как определено OS. Это может, очевидно, измениться от версии до версии, так лучше всего, чтобы не использовать непосредственно. Посмотрите здесь для различных определенных для OS ценностей.
Метод 2
>>> import os
>>> os.name
'nt' # for Linux and Mac it prints 'posix'
Как это работает (источник): Внутренне это проверяет, есть ли у питона определенные для OS модули, названные posix или nt. Если Вы хотите импортировать эти модули и методы требования на нем, это работает отлично. Обратите внимание, что нет никакого дифференцирования между Linux или OSX.
Метод 3
>>> import platform
>>> platform.system()
'Windows' # for Linux it prints 'Linux', Mac it prints `'Darwin'
Как это работает (источник): Внутренне это в конечном счете назовет внутренние API OS, получит собственное имя вариантов OS как ' win32' или ' win16' или ' linux1' и затем нормализуйте к большему количеству родовых названий как ' Windows' или ' Linux' или ' Darwin' применяя несколько эвристик. Это - лучший портативный способ получить нормализованное имя OS.
Резюме
Согласуйте доступные тесты с платформой модуля и распечатайте ответ для Вашей системы:
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
Вы можете также использовать только модуль платформы, не импортируя модуль рта, чтобы получить всю информацию.
>>> 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')
Хорошее и опрятное расположение для сообщения о цели может быть достигнуто, используя эту линию:
for i in zip(['system','node','release','version','machine','processor'],platform.uname()):print i[0],':',i[1]
Это дает эту продукцию:
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
Что отсутствует, обычно версия операционной системы, но Вы должны знать, запускаете ли Вы Windows, Linux или Mac платформа, независимый путь состоит в том, чтобы использовать этот тест:
In []: for i in [platform.linux_distribution(),platform.mac_ver(),platform.win32_ver()]:
....: if i[0]:
....: print 'Version: ',i[0]
Это решение работает на 'питона' и на 'jython'.
модуль os_identify.py:
import platform
import os
# This module contains functions to determine the basic type of
# OS we are running on.
# Contrary to the functions in the `os` and `platform` modules,
# these allow to identify the actual basic OS,
# no matter whether running on the `python` or `jython` interpreter.
def is_linux():
try:
platform.linux_distribution()
return True
except:
return False
def is_windows():
try:
platform.win32_ver()
return True
except:
return False
def is_mac():
try:
platform.mac_ver()
return True
except:
return False
def name():
if is_linux():
return "Linux"
elif is_windows():
return "Windows"
elif is_mac():
return "Mac"
else:
return "<unknown>"
Используйте как это:
import os_identify
print "My OS: " + os_identify.name()