如何在Python中检查操作系统?

kol*_*lek 124 python linux operating-system

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

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

如果脚本可以判断它是Mac,Windows还是Linux,那也没关系.我怎么检查呢?

the*_*olf 253

你可以使用sys.platform:

from sys import platform
if platform == "linux" or platform == "linux2":
    # linux
elif platform == "darwin":
    # OS X
elif platform == "win32":
    # Windows...
Run Code Online (Sandbox Code Playgroud)

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

有关有效值,请参阅文档.

  • 谢谢.linux和linux2有什么区别? (18认同)
  • 为什么`as _platform`?直接使用`platform`有什么不对,没有别名呢? (8认同)
  • 请注意,自 Python 3.3 起,“linux2”不再是“platform”的可能值(请参阅链接文档以获取证实),因此如果您只需要支持 Python 3.3 及更高版本,则可以安全地删除“或 platform =” = "linux2"` 第一个条件的子句。 (7认同)
  • 请注意,在cygwin中,它会像某人所期望的那样返回"cygwin"而不是"win32". (6认同)
  • 我使用Cygwin在Windows 7上使用Python 2测试了此代码,并将_platform作为"win32"返回. (2认同)

Lau*_*RTE 15

如果你想知道你是哪个平台:"Linux","Windows"或"Darwin"(Mac)没有更高的精度,你应该使用:

>>> import platform
>>> platform.system()
'Linux'  # or 'Windows'/'Darwin'
Run Code Online (Sandbox Code Playgroud)

platform.system功能在uname内部使用.

  • @BrandonBenefield,枚举是可能值的一个示例。在 Apple 设备上,它返回“达尔文”。 (4认同)
  • 我喜欢这个解决方案,但我想指出,文档中指出它将返回 `Linux`、`Windows`、`Java` 或空字符串。 https://devdocs.io/python~3.7/library/平台#platform.system (2认同)

Nic*_*tin 14

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

获得该信息后,您可以使用它来确定调用类似的内容os.uname()是否适合收集更具体的信息.你也可以在类似unix的操作系统上使用Python系统信息,或者使用pywin32 for Windows.

如果您想要进行更深入的检查而不想关心操作系统,还可以使用psutil.


Sve*_*ach 6

platform模块中提供了更详细的信息.


Ond*_*ták 5

您可以使用sys.platform