我找到了平台模块,但它说它返回'Windows'并且它在我的机器上返回'Microsoft'。我注意到在stackoverflow的另一个线程中它有时会返回'Vista'。
所以,问题是,如何实施?
if isWindows():
...
以向前兼容的方式?如果我必须检查“Vista”之类的东西,那么当下一个版本的Windows出现时它就会中断。
注意:声称这是一个重复的问题的答案实际上没有回答问题isWindows
。他们回答“什么平台”的问题。由于存在许多种类的窗口,它们都没有全面地描述如何得到isWindows
的答案。
答案 0 :(得分:254)
Python os模块
专门针对Python 3.6 / 3.7:
os.name
:操作的名称 系统相关模块导入。该 目前已有以下名称 注册:'posix','nt','java'。
在您的情况下,您要检查'nt'为os.name
输出:
import os
if os.name == 'nt':
...
os.name
还有一条说明:
另请参见
sys.platform
具有更精细的粒度。os.uname()
给出了 系统相关的版本信息。platform模块提供 详细检查系统的身份。
答案 1 :(得分:45)
您使用的是platform.system
吗?
system() Returns the system/OS name, e.g. 'Linux', 'Windows' or 'Java'. An empty string is returned if the value cannot be determined.
如果这不起作用,可以尝试platform.win32_ver
,如果它没有引发异常,那么你就是在Windows上;但我不知道它是否向前兼容64位,因为它名称中有32个。
win32_ver(release='', version='', csd='', ptype='') Get additional version information from the Windows Registry and return a tuple (version,csd,ptype) referring to version number, CSD level and OS type (multi/single processor).
但os.name
可能就像其他人提到的那样。
<小时/> 对于它的价值,这里有一些他们在platform.py:
中检查Windows的方法。
if sys.platform == 'win32':
#---------
if os.environ.get('OS','') == 'Windows_NT':
#---------
try: import win32api
#---------
# Emulation using _winreg (added in Python 2.0) and
# sys.getwindowsversion() (added in Python 2.3)
import _winreg
GetVersionEx = sys.getwindowsversion
#----------
def system():
""" Returns the system/OS name, e.g. 'Linux', 'Windows' or 'Java'.
An empty string is returned if the value cannot be determined.
"""
return uname()[0]
答案 2 :(得分:42)
答案 3 :(得分:23)
:
import sys
# its win32, maybe there is win64 too?
is_windows = sys.platform.startswith('win')
答案 4 :(得分:9)
import platform
is_windows = any(platform.win32_ver())
或
import sys
is_windows = hasattr(sys, 'getwindowsversion')