Python:我在哪个操作系统上运行?

nodio 发布于 2018-02-08 python 最后更新 2018-02-08 01:06 955 浏览

我需要看看我是在Windows,Unix等?

已邀请:

ut_et

赞同来自:

>>> import os
>>> print os.name
posix
>>> import platform
>>> platform.system()
'Linux'
>>> platform.release()
'2.6.22-15-generic'
请参阅:platform — Access to underlying platform’s identifying data

ut_sed

赞同来自:

Dang - 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'

nodio

赞同来自:

这里记录的是Mac上的结果:

>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'Darwin'
>>> platform.release()
'8.11.1'

icum

赞同来自:

如果您已经导入了sys,并且您不想导入另一个模块,也可以使用sys.platform

>>> import sys
>>> sys.platform
'linux2'

cut

赞同来自:

我这样做

import sys
print sys.platform
这里的文档:sys.platform。 你需要的一切可能是在sys模块中。

hquas

赞同来自:

我使用的是与weblogic一起提供的WLST工具,但不实现平台包。

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 (issue with os.system() on windows 2003 with jdk1.5)(我不能这样做,我必须使用开箱即用的weblogic),这是我使用的:
def iswindows():
  os = java.lang.System.getProperty( "os.name" )
  return "win" in os.lower()

funde

赞同来自:

>>> import platform
>>> platform.system()

vomnis

赞同来自:

以相同的态度....

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")

benim

赞同来自:

/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)

ut_est

赞同来自:

对于Jython来说,获得os名称的唯一方法是检查os.name Java属性(在WinXP上使用JACE 2.0.3的sysosplatform模块进行尝试):

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

ab_non

赞同来自:

如果您希望用户可读的数据,但仍然详细,您可以使用platform.platform()

>>> import platform
>>> platform.platform()
'Linux-3.3.0-8.fc16.x86_64-x86_64-with-fedora-16-Verne'
这里有几个不同的可能的电话,你可以确定你在哪里
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(),
))
这个脚本的输出在几个不同的系统上运行,可以在这里找到:https://github.com/hpcugent/easybuild/wiki/OS_flavor_name_version

kautem

赞同来自:

有趣的结果在Windows 8上:

>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'post2008Server'
编辑:这是bug

det

赞同来自:

如果你没有寻找内核版本等,但寻找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上运行这个才能工作。如果您希望在不同平台上使用更通用的脚本,可以将其与其他答案中给出的代码示例混合使用。

fnam

赞同来自:

示例代码来区分使用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

hquae

赞同来自:

用模块平台检查可用的测试,并打印出系统的答案:

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

funde

赞同来自:

尝试这个:

import os
os.uname()
你可以做到这一点:
info=os.uname()
info[0]
info[1]

nrerum

赞同来自:

注意,如果你在Cygwin的Windows上,os.nameposix

>>> import os, platform
>>> print os.name
posix
>>> print platform.system()
CYGWIN_NT-6.3-WOW

faut

赞同来自:

为了完整性,“OS”环境变量似乎被无处不在。在Windows XP/7/8/10上,它被设置为“Windows_NT”。在Linux SuSE SP2上,它被设置为“x86-64 linux sles11 [2]”。我没有访问OS-X或BSD机器,在那里检查也会很有趣。

import os
os_name = os.getenv("OS")
if os_name == "Windows_NT":
    # Windows
elif "linux" in os_name:
    # Linux
elif ...

qullam

赞同来自:

你也可以只使用平台模块而不用导入os模块来获取所有的信息。

>>> 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]

modit

赞同来自:

使用import osos.name关键字。

ea_qui

赞同来自:

新的答案如何?

import psutil
psutil.OSX     #True
psutil.WINDOWS #False
psutil.LINUX   #False 
如果我使用OSX,这将是输出