如何检查I';我用Python在Windows上运行?

如何检查I';我用Python在Windows上运行?,python,platform,platform-specific,Python,Platform,Platform Specific,我找到了平台模块,但它说它在我的机器上返回“Windows”和“Microsoft”。我注意到在stackoverflow上的另一个线程中,它有时返回“Vista” 所以,问题是,如何实现 if isWindows(): ... 以向前兼容的方式?如果我必须检查像“Vista”这样的东西,那么当下一个windows版本出现时,它就会崩溃 注意:声称这是一个重复问题的答案实际上并没有回答问题isWindows。他们回答了“什么平台”的问题。由于存在多种风格的windows,因此没有一款全面

我找到了平台模块,但它说它在我的机器上返回“Windows”和“Microsoft”。我注意到在stackoverflow上的另一个线程中,它有时返回“Vista”

所以,问题是,如何实现

if isWindows():
  ...
以向前兼容的方式?如果我必须检查像“Vista”这样的东西,那么当下一个windows版本出现时,它就会崩溃


注意:声称这是一个重复问题的答案实际上并没有回答问题
isWindows
。他们回答了“什么平台”的问题。由于存在多种风格的windows,因此没有一款全面描述如何获得
isWindows
的答案

Python模块

专门针对Python 3.6/3.7:

os.name
:操作系统的名称 已导入系统相关模块。这个 以下名称目前已被删除 已注册:“posix”、“nt”、“java”

在您的情况下,您希望检查'nt'作为
os.name
输出:

import os

if os.name == 'nt':
     ...
os.name
上还有一个注释:

See还具有更细的粒度。给予 依赖于系统的版本信息

该模块提供 详细检查系统的标识


你应该能够依靠。名字

编辑:现在我要说的是,最清晰的方法是通过模块,正如另一个答案所示。

在sys中也是:

import sys
# its win32, maybe there is win64 too?
is_windows = sys.platform.startswith('win')
你在用什么

但是,
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]


类似于“应该有一种——最好只有一种——显而易见的方法来做。”唉,python给我们提供了至少三种方法。妮特:你应该更喜欢使用名称
is_windows
而不是
isWindows
。在64位机器上,使用windows 7(64位操作系统)这是输出:python 3.1.1(r311:74483,2009年8月17日,16:45:59)[MSC v.1500 64位(AMD64)]在win32>>>print(sys.platform)win32>>>platform.win32\u ver()上('post2008Server','6.1.7100','Multiprocessor Free')请注意,构建显式地将其命名为win32。Oops,我认为输出的格式会更好。希望您能阅读它。nt是Windows的值linux通常返回什么?posix?@AndiJay-是的,但应该很容易测试!@MartinBeckett-不一定。您可能没有运行linux的机器。@ArtOfWarfare你不需要机器;)(也许在2015年)我在64位Windows上,这给了我‘win32’:)@Hut8我注意到了同样的事情。我有点确定,不管怎样,它通常都会返回‘win32’;至少在我读的代码中,我只看到对它的检查。 system() Returns the system/OS name, e.g. 'Linux', 'Windows' or 'Java'. An empty string is returned if the value cannot be determined. 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).
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]
import platform
is_windows = any(platform.win32_ver())
import sys
is_windows = hasattr(sys, 'getwindowsversion')