如何检查我是否在 Windows 上运行 Python?

新手上路,请多包涵

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

那么,问题来了,如何实现呢?

 if is_windows():
  ...

以向前兼容的方式?如果我必须检查“Vista”之类的东西,那么它会在下一个版本的 Windows 出现时中断。


注意:声称这是重复问题的答案实际上并未回答问题 is_windows 。他们回答“什么平台”的问题。由于存在多种类型的窗口,因此没有一个能够全面描述如何获得 isWindows 的答案。

原文由 gman 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 405
2 个回答

Python 操作系统 模块

专门针对 Python 3.63.7:

os.name : 导入的操作系统依赖模块的名称。当前已注册以下名称:“posix”、“nt”、“java”。

在您的情况下,您想检查“nt”作为 os.name 输出:

 import os

if os.name == 'nt':
     ...

还有一条关于 os.name 的注释:

另见 sys.platform 具有更细的粒度。 os.uname() 给出系统相关的版本信息。

平台 模块提供对系统身份的详细检查。

原文由 Martin Beckett 发布,翻译遵循 CC BY-SA 4.0 许可协议

您使用的是 platform.system 吗?

 系统()
        返回系统/操作系统名称,例如“Linux”、“Windows”或“Java”。

        如果无法确定该值,则返回一个空字符串。

如果这不起作用,也许可以尝试 platform.win32_ver 如果它没有引发异常,则说明您使用的是 Windows;但我不知道它是否向前兼容 64 位,因为它的名称中有 32。

win32_ver(release='', version='', csd='', ptype='')
        从 Windows 注册表获取其他版本信息
        并返回一个引用版本的元组 (version,csd,ptype)
        数量、CSD 级别和操作系统类型(多/单
        处理器)。

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

原文由 Mark Rushakoff 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题