【发布时间】:2026-01-27 08:00:01
【问题描述】:
我想检查操作系统(在运行脚本的计算机上)。
我知道我可以在 Linux 中使用 os.system('uname -o'),但它在控制台中给了我一条消息,我想写入一个变量。
如果脚本可以判断它是 Mac、Windows 还是 Linux,那就没问题了。我怎样才能检查它?
【问题讨论】:
标签: python linux operating-system
我想检查操作系统(在运行脚本的计算机上)。
我知道我可以在 Linux 中使用 os.system('uname -o'),但它在控制台中给了我一条消息,我想写入一个变量。
如果脚本可以判断它是 Mac、Windows 还是 Linux,那就没问题了。我怎样才能检查它?
【问题讨论】:
标签: python linux operating-system
您可以使用sys.platform。
【讨论】:
您可以通过查看sys.platform 来大致了解您正在使用的操作系统。
获得该信息后,您可以使用它来确定调用 os.uname() 之类的名称是否适合收集更具体的信息。您还可以在类 unix 的操作系统上使用 Python System Information 之类的东西,或者在 Windows 上使用 pywin32 之类的东西。
如果您想在不关心操作系统的情况下进行更深入的检查,还有psutil。
【讨论】:
你可以使用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。
【讨论】:
"cygwin" 而不是 "win32",正如人们所期望的那样。
"linux2" 不再是 platform 的可能值(请参阅链接文档以获取佐证),因此如果您只需要支持 Python 3.3 及更高版本,您可以放心从第一个条件中删除 ` or platform == "linux2"` 子句。
更多详细信息请参见platform module。
【讨论】:
platform 模块比sys.platform 有什么优势吗?我什么时候想使用哪种方法?
platform 模块获得更详细的结构化信息。只需单击文档链接即可。
如果您想知道您在“Linux”、“Windows”或“Darwin”(Mac)之外的哪个平台上,没有更精确的,您应该使用:
>>> import platform
>>> platform.system()
'Linux' # or 'Windows'/'Darwin'
platform.system 函数在内部使用uname。
【讨论】:
Linux、Windows、Java 或空字符串。devdocs.io/python~3.7/library/platform#platform.system