System Information Tool
This utility gathers and displays detailed information about the system hardware and operating system. It demonstrates how to use the standard platform module for OS details and the powerful third-party psutil library for hardware utilization stats.
Modules Used:
- platform: To retrieve operating system and processor information.
psutil: To retrieve CPU, memory, and disk usage statistics.
Installation
You will need to install psutil:
pip install psutil
The Code
Save this as sysinfo.py.
import platform
import psutil
from datetime import datetime
def get_size(bytes, suffix="B"):
"""
Scale bytes to its proper format
e.g:
1253656 => '1.20MB'
1253656678 => '1.17GB'
"""
factor = 1024
for unit in ["", "K", "M", "G", "T", "P"]:
if bytes < factor:
return f"{bytes:.2f}{unit}{suffix}"
bytes /= factor
def print_system_info():
print("="*40, "System Information", "="*40)
uname = platform.uname()
print(f"System: {uname.system}")
print(f"Node Name: {uname.node}")
print(f"Release: {uname.release}")
print(f"Version: {uname.version}")
print(f"Machine: {uname.machine}")
print(f"Processor: {uname.processor}")
def print_cpu_info():
print("="*40, "CPU Info", "="*40)
# Number of cores
print("Physical cores:", psutil.cpu_count(logical=False))
print("Total cores:", psutil.cpu_count(logical=True))
# CPU frequencies
cpufreq = psutil.cpu_freq()
if cpufreq:
print(f"Max Frequency: {cpufreq.max:.2f}Mhz")
print(f"Current Frequency: {cpufreq.current:.2f}Mhz")
# CPU usage
print(f"Total CPU Usage: {psutil.cpu_percent(interval=1)}%")
def print_memory_info():
print("="*40, "Memory Information", "="*40)
# Virtual memory
svmem = psutil.virtual_memory()
print(f"Total: {get_size(svmem.total)}")
print(f"Available: {get_size(svmem.available)}")
print(f"Used: {get_size(svmem.used)}")
print(f"Percentage: {svmem.percent}%")
def print_disk_info():
print("="*40, "Disk Information", "="*40)
partitions = psutil.disk_partitions()
for partition in partitions:
print(f"=== Device: {partition.device} ===")
print(f" Mountpoint: {partition.mountpoint}")
print(f" File System Type: {partition.fstype}")
try:
partition_usage = psutil.disk_usage(partition.mountpoint)
except PermissionError:
# Catch errors for disks that aren't ready
continue
print(f" Total Size: {get_size(partition_usage.total)}")
print(f" Used: {get_size(partition_usage.used)}")
print(f" Free: {get_size(partition_usage.free)}")
print(f" Percentage: {partition_usage.percent}%")
if __name__ == "__main__":
print_system_info()
print_cpu_info()
print_memory_info()
print_disk_info()
Usage
python sysinfo.py