在Windows系统下获取系统信息(CPU速度-总RAM-显卡型号等)

9

我搜索了很多但没找到有用的东西。这个问题是能否获取系统信息,例如:

CPU: Intel Core i7-3770K CPU @3.5Ghz
RAM: 8GB
Graphic Card: NVIDIA GeForce GTX 680

在Windows下,我怎样才能获得此输出?
编辑:platform.processor()没有给出我想要的输出。所以对我来说没有用。

虽然没有完整答案,但如果没有人有,那么-此主题的讨论在底部附近有一篇帖子,其中包含一些使用Linux上的 DBus 的示例代码。 这个git仓库里有关于Windows设置DBus的信息。也许结合这两者并加入一些努力,你可能会有所发现。 - Lost
1个回答

23

我自己已经想了一段时间怎么做,所以我查找了一些资料,并使用 wmi (需要 pywin32) 找到了这个解决方案。当然,不用说,这只适用于 Windows 机器(并且问题有 Windows 标签)。

import wmi

computer = wmi.WMI()
computer_info = computer.Win32_ComputerSystem()[0]
os_info = computer.Win32_OperatingSystem()[0]
proc_info = computer.Win32_Processor()[0]
gpu_info = computer.Win32_VideoController()[0]

os_name = os_info.Name.encode('utf-8').split(b'|')[0]
os_version = ' '.join([os_info.Version, os_info.BuildNumber])
system_ram = float(os_info.TotalVisibleMemorySize) / 1048576  # KB to GB

print('OS Name: {0}'.format(os_name))
print('OS Version: {0}'.format(os_version))
print('CPU: {0}'.format(proc_info.Name))
print('RAM: {0} GB'.format(system_ram))
print('Graphics Card: {0}'.format(gpu_info.Name))

输出示例:

OS Name: Microsoft Windows 7 Ultimate 
OS Version: 6.1.7601 7601
CPU: Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
RAM: 15.9443855286 GB
Graphics Card: NVIDIA GeForce GTX 960

您可以通过pip安装所需的两个软件包:

pip install --upgrade wmi
pip install --upgrade pypiwin32

想要查看在各种Win32控制器类中可以访问到哪些其他变量,请参考以下文档:

在SO上找到的相关答案:https://dev59.com/FEbRa4cB1Zd3GeqPzE9e#11785020


更新:对于系统内存,你可以使用os_info.TotalVisibleMemorySize(以千字节为单位返回值)或computer_info.TotalPhysicalMemory(以字节为单位返回值)。如果使用后者,则可以使用hurry.filesize快速将其转换为易读的字符串格式。

例如:

from hurry.filesize import size
...
size(int(computer_info.TotalPhysicalMemory))

在我的情况下,输出为:15G,甚至可以将 G 修改为任何其他字符。有关更多信息,请参见此 SO 答案:https://dev59.com/5W435IYBdhLWcg3w0Tnc#5194348


好的,至少我得到了我想要的内存和CPU。谢谢你的回答! - GLHF
@Nels Carlson,看,这就是如何给出正确的答案。 - GLHF
@GLHF,GPU信息也在那里。我有没有错过你的问题? - HEADLESS_0NE
1
哦,对不起,我错过了那个。这就是我要找的答案。再次感谢你。 - GLHF

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接