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的sys
, os
和platform
模块尝试):
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.name
是posix
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 os
和os.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 ...