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