我想检查操作系统(在脚本运行的计算机上)。
我知道我可以在 Linux 中使用 os.system('uname -o')
,但它在控制台中给了我一条消息,我想写入一个变量。
如果脚本可以判断它是 Mac、Windows 还是 Linux,那就没问题了。我怎样才能检查它?
您可以使用 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?” 的答案
如果您想知道您在“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
通过选中 sys.platform
,您可以大致了解您正在使用的操作系统。
获得该信息后,您可以使用它来确定调用 os.uname()
之类的内容是否适合收集更具体的信息。您还可以在类 unix 的操作系统上使用 Python System Information 之类的东西,或者在 Windows 上使用 pywin32 之类的东西。
如果您想在不关心操作系统的情况下进行更深入的检查,还有 psutil。
platform
module 中提供了更多详细信息。
platform
模块是否比 sys.platform
有任何优势?我什么时候想使用哪种方法?
platform
模块获得更详细的结构化信息。只需单击文档链接。
不定期副业成功案例分享
"cygwin"
而不是"win32"
,正如人们所期望的那样。"linux2"
不再是platform
的可能值(请参阅链接文档以获取佐证),因此如果您只需要支持 Python 3.3 及更高版本,您可以安全地删除 ` 或 platform == "第一个条件的 linux2"` 子句。