【问题标题】:How do I check the operating system in Python?如何在 Python 中检查操作系统?
【发布时间】:2012-01-03 10:35:59
【问题描述】:

我想检查操作系统(在运行脚本的计算机上)。

我知道我可以在 Linux 中使用 os.system('uname -o'),但它在控制台中给了我一条消息,我想写入一个变量。

如果脚本可以判断它是 Mac、Windows 还是 Linux,那就没问题了。我怎样才能检查它?

【问题讨论】:

标签: python linux operating-system


【解决方案1】:

你可以使用sys.platform:

from sys import platform
if platform == "linux" or platform == "linux2":
    # linux
elif platform == "darwin":
    # OS X
elif platform == "win32":
    # Windows...

sys.platform 的粒度比sys.name 更细。

有关有效值,请咨询the documentation

另见“What OS am I running on?”的答案

【讨论】:

  • 请注意,在 cygwin 中,它返回 "cygwin" 而不是 "win32",正如人们所期望的那样。
  • 谢谢。 linux和linux2有什么区别?
  • BSD 的输出是什么?
  • 请注意,从 Python 3.3 开始,"linux2" 不再是 platform 的可能值(请参阅链接文档以获取佐证),因此如果您只需要支持 Python 3.3 及更高版本,您可以放心从第一个条件中删除 ` or platform == "linux2"` 子句。
  • @ohailolcat ,用于向后兼容。它可能永远不会改变。请参阅以这种方式定义它的原始补丁以获取更多信息:mail.python.org/pipermail/patches/2000-May/000648.html
【解决方案2】:

如果您想知道您在“Linux”、“Windows”或“Darwin”(Mac)之外的哪个平台上,没有更精确的,您应该使用:

>>> import platform
>>> platform.system()
'Linux'  # or 'Windows'/'Darwin'

platform.system 函数在内部使用uname

【讨论】:

  • 我喜欢这个解决方案,但我想指出,从文档中它声明它将返回 LinuxWindowsJava 或空字符串。devdocs.io/python~3.7/library/platform#platform.system
  • @BrandonBenefield,枚举是可能值的一个示例。在 Apple 设备上,它返回“Darwin”。
【解决方案3】:

您可以通过查看sys.platform 来大致了解您正在使用的操作系统。

获得该信息后,您可以使用它来确定调用 os.uname() 之类的名称是否适合收集更具体的信息。您还可以在类 unix 的操作系统上使用 Python System Information 之类的东西,或者在 Windows 上使用 pywin32 之类的东西。

如果您想在不关心操作系统的情况下进行更深入的检查,还有psutil

【讨论】:

    【解决方案4】:

    更多详细信息,请访问platform module

    【讨论】:

    • platform 模块比sys.platform 有什么优势吗?我什么时候想使用哪种方法?
    • @matth:您可以从platform 模块获得更详细的结构化信息。只需单击文档链接即可。
    【解决方案5】:

    您可以使用sys.platform

    【讨论】:

      猜你喜欢
      • 2010-09-16
      • 1970-01-01
      • 2016-12-18
      • 2019-10-04
      • 2011-06-12
      • 2014-08-21
      • 2010-09-24
      • 1970-01-01
      相关资源
      最近更新 更多