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

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

>>> import os >>> print os.name posix >>> import platform >>> platform.system() 'Linux' >>> platform.release() '2.6.22-15-generic' 

请参阅: 平台 – 访问底层平台的标识数据

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' 

这里logging的是Mac上的结果:

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

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

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

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

这里有几个不同的可能的电话,你可以确定你在哪里

 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

我这样做

 import sys print sys.platform 

文档在这里: sys.platform 。

你需要的一切可能是在sys模块中。

我使用的是与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 ( 使用jdk1.5在windows 2003上使用os.system()问题 )(我不能这样做,我必须使用开箱即用的weblogic),这是我使用的:

 def iswindows(): os = java.lang.System.getProperty( "os.name" ) return "win" in os.lower() 
 >>> import platform >>> platform.system() 

对于Jython来说,获得os名称的唯一方法是检查os.name Java属性(在WinXP上用Jython 2.5.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 

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

有趣的结果在Windows 8上:

 >>> import os >>> os.name 'nt' >>> import platform >>> platform.system() 'Windows' >>> platform.release() 'post2008Server' 

编辑:这是一个错误

以相同的态度….

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

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

注意,如果你使用Cygwin在os.nameposix Windows上。

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

尝试这个:

 import os os.uname() 

你可以做到这一点:

 info=os.uname() info[0] info[1] 

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

 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 

你也可以只使用平台模块而不用导入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 

缺less的通常是操作系统版本,但是你应该知道,如果你正在运行windows,linux或mac平台的一个独立的方式是使用这个testing:

 In []: for i in [platform.linux_distribution(),platform.mac_ver(),platform.win32_ver()]: ....: if i[0]: ....: print 'Version: ',i[0] 

使用import osos.name关键字。

新的答案如何?

 import psutil psutil.OSX #True psutil.WINDOWS #False psutil.LINUX #False 

如果我使用OSX,这将是输出

为了完整性,“OS”环境variables似乎被无处不在。 在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 ...