Python предоставляет несколько библиотек, которые позволяют получать подробную информацию о системе ПК. В этой статье мы рассмотрим, как использовать Python для извлечения информации о различных компонентах компьютера, таких как процессор, оперативная память, диски и другие.
Для работы с системной информацией в Python используются библиотеки psutil и platform. Для установки этих библиотек выполните следующие команды:
pip install psutil platform screeninfo
import platform, psutil, socket, uuid, re, wmi
from screeninfo import get_monitors
def humanSize(_bytes):
suffixes = ['Б', 'КБ', 'МБ', 'ГБ', 'ТБ', 'ПБ']
i = 0
while _bytes >= 1024 and i < len(suffixes)-1:
_bytes /= 1024.
i += 1
f = ('%.2f' % _bytes).rstrip('0').rstrip('.')
return '%s %s' % (f, suffixes[i])
# OS
print('-'*15, 'ОС', '-'*15)
os = platform.uname()
host = socket.gethostname()
print(f'ОС: {os.system} {os.release} ({os.version})')
print(f'Архитектура: {os.machine}')
# Network
print('-'*15, 'Сеть', '-'*15)
print(f'Имя устройства: {host}')
print(f'IP-адрес: {socket.gethostbyname(host)}')
mac = ':'.join(re.findall('..', '%012x' % uuid.getnode()))
print(f'MAC-адрес: {mac}')
# CPU
print('-'*15, 'ЦПУ', '-'*15)
computer = wmi.WMI()
proc_info = computer.Win32_Processor()[0]
gpu_info = computer.Win32_VideoController()[0]
cpu_cores = psutil.cpu_count(logical=False)
cpu_threads = psutil.cpu_count(logical=True)
print(f"ЦПУ: {format(proc_info.Name)}")
print(f"Ядра процессора: {cpu_cores}")
print(f"Потоки процессора: {cpu_threads}")
# CPU frequencies
print('-'*15, 'ЦПУ частоты', '-'*15)
cpufreq = psutil.cpu_freq()
print(f"Макс. частота: {cpufreq.max:.2f} Mhz")
print(f"Мин. частота: {cpufreq.min:.2f} Mhz")
print(f"Текущая частота: {cpufreq.current:.2f} Mhz")
# CPU usage
print('-'*15, 'ЦПУ использование', '-'*15)
for i, percentage in enumerate(psutil.cpu_percent(percpu=True, interval=1)):
print(f"Core {i + 1}: {percentage}%")
print(f"Общая загрузка ЦПУ: {psutil.cpu_percent()}%")
print('-'*15, 'Видеокарта', '-'*15)
print('Видеокарта: {0}'.format(gpu_info.Name))
# Ram
print('-'*15, 'ОЗУ', '-'*15)
memory = psutil.virtual_memory()
print(f"Объем: {humanSize(memory.total)}")
print(f"Доступно: {humanSize(memory.available)}")
print(f"Используется: {humanSize(memory.used)}")
print(f"Процент: {memory.percent}%")
# SWAP
print("-"*15, "SWAP", "-"*15)
swap = psutil.swap_memory()
print(f"Объем: {humanSize(swap.total)}")
print(f"Доступно: {humanSize(swap.free)}")
print(f"Используется: {humanSize(swap.used)}")
print(f"Процент: {swap.percent}%")
# Disk
print('-'*15, 'Disk', '-'*15)
disk_partitions = psutil.disk_partitions()
for partition in disk_partitions:
print(f"Диск: {partition.device}")
disk = psutil.disk_usage(partition.mountpoint)
print(f" Файловая система: {partition.fstype}")
print(f" Объем: {humanSize(disk.total)}")
print(f" Используется: {humanSize(disk.used)}")
print(f" Доступно: {humanSize(disk.free)}")
print(f" Процент: {disk.percent}%")
# Monitor
print('-'*15, 'Monitor', '-'*15)
for monitor in get_monitors():
print(f"{monitor.name.strip('\\.')}: {monitor.width}x{monitor.height}")
*текст*
- жирный,
~текст~
- курсивный,
-текст-
- _текст_
- подчеркнутый