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


148

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

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

如果脚本可以告诉您它是Mac,Windows还是Linux,那就可以了。我该如何检查?



Answers:


287

您可以使用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

有关有效值,请参阅文档

另请参见“我正在运行什么操作系统?”的答案


8
请注意,在cygwin中,它"cygwin"不会"win32"像预期的那样返回。
2011年

21
谢谢。linux和linux2有什么区别?
Tharindu Rusira

1
BSD的输出是什么?
galois 2015年

1
请注意,由于Python 3.3 "linux2"不再是的可能值platform(请参见链接的文档以确认),因此,如果您仅需要支持Python 3.3及更高版本,则可以安全地从第一个条件。
Mark Amery

23

如果您想更精确地了解使用“ Linux”,“ Windows”或“ Darwin”(Mac)的平台,则应使用:

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

platform.system函数在uname内部使用。


1
我喜欢这个解决办法,但我想指出的是,从文档它说,它会返回LinuxWindowsJava或一个空字符串。devdocs.io/python~3.7/library/platform#platform.system
布兰登·

2
@BrandonBenefield,枚举是可能值的示例。在Apple设备上,它返回“ Darwin”。
洛朗·劳波特

15

通过检查,您可以大致了解所使用的操作系统sys.platform

获得这些信息后,您可以使用它来确定调用类似的东西os.uname()是否适合收集更具体的信息。您也可以在类似Unix的操作系统上使用Python系统信息,或者在Windows 上使用pywin32

如果您想进行更深入的检查而又不想关心操作系统,那么也可以使用psutil



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.