Get system information(CPU speed-Total RAM-Graphic Card model etc.) under Windows
Asked Answered
I

1

10

I searched a lot but couldn't find anything useful. Is this possible to get system information like;

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

under Windows? How can I reach this output?

Edit: platform.processor() is not giving the output that I want. So that is useless for me.

Infatuate answered 29/6, 2016 at 15:15 Comment(1)
Not a complete answer, but in case no one has one -- Discussion on this topic has a post near the bottom with some sample code for use of dbus on linux. This git repo has info about setting up dbus for windows. Maybe combine the two with some elbow grease and you might be on to somethingPlutonium
T
23

I've been wondering how to do this myself for a while now, so I dug around a bit and came up with this solution using wmi (which requires pywin32). Of course, it goes without saying, this only works on Windows machines (and the question has the Windows tag).

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))

Output example:

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

You can install both required packages via pip:

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

To see what other variables you can access in various Win32 controller classes, take a look at this documentation:

Related answer found on SO: https://mcmap.net/q/539511/-how-can-i-read-system-information-in-python-on-windows


Update: For System RAM, you can use either os_info.TotalVisibleMemorySize (returns the value in kilobytes) or computer_info.TotalPhysicalMemory (returns the value in bytes). If you use the latter, you can use hurry.filesize to quickly convert it to a pretty human readable string.

For example:

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

Which in my case outputs: 15G You can even modify the G to whatever else you want. See this SO answer for more info: https://mcmap.net/q/156613/-better-way-to-convert-file-sizes-in-python-closed

Triode answered 29/6, 2016 at 16:26 Comment(4)
Well it's ok at least I got ram and cpu as I wanted. Thank you for your answer!Infatuate
@Nels Carlson see, this is how to give a correct answer.Infatuate
@Infatuate GPU information is there also. Did I miss something in your question?Triode
Oh yes sorry I missed that. This is the answer I was looking for. Thank you again.Infatuate

© 2022 - 2024 — McMap. All rights reserved.