本文目录导读:

在Python中获取系统信息有多种方法,我为你整理了几个常用案例:
使用内置模块获取基本信息
os模块 - 基础系统信息
import os
import platform
# 操作系统类型
print(f"操作系统: {os.name}") # 'posix', 'nt', 'java'
print(f"系统名称: {platform.system()}") # Windows, Linux, Darwin等
print(f"系统版本: {platform.version()}")
# 主机信息
print(f"主机名: {os.uname().nodename}")
print(f"体系结构: {platform.machine()}")
print(f"处理器: {platform.processor()}")
# 环境变量
print(f"PATH: {os.environ.get('PATH', 'N/A')}")
print(f"HOME: {os.environ.get('HOME', os.environ.get('USERPROFILE', 'N/A'))}")
使用psutil库 - 最全面的系统信息库
首先安装:pip install psutil
import psutil
import datetime
# CPU信息
print(f"CPU核心数: {psutil.cpu_count()}")
print(f"CPU逻辑核心数: {psutil.cpu_count(logical=True)}")
print(f"CPU使用率: {psutil.cpu_percent(interval=1)}%")
print(f"CPU频率: {psutil.cpu_freq().current} MHz")
# 内存信息
memory = psutil.virtual_memory()
print(f"总内存: {memory.total / (1024**3):.2f} GB")
print(f"可用内存: {memory.available / (1024**3):.2f} GB")
print(f"内存使用率: {memory.percent}%")
# 磁盘信息
for partition in psutil.disk_partitions():
print(f"分区: {partition.device}")
usage = psutil.disk_usage(partition.mountpoint)
print(f" 总空间: {usage.total / (1024**3):.2f} GB")
print(f" 已使用: {usage.used / (1024**3):.2f} GB")
print(f" 使用率: {usage.percent}%")
# 网络信息
net_io = psutil.net_io_counters()
print(f"发送字节: {net_io.bytes_sent / (1024**2):.2f} MB")
print(f"接收字节: {net_io.bytes_recv / (1024**2):.2f} MB")
# 进程信息
print(f"进程数量: {len(psutil.pids())}")
# 系统启动时间
boot_time = datetime.datetime.fromtimestamp(psutil.boot_time())
print(f"系统启动时间: {boot_time}")
print(f"系统运行时间: {datetime.datetime.now() - boot_time}")
跨平台兼容的CPU信息获取
import platform
import os
def get_cpu_info():
system = platform.system()
cpu_info = {}
if system == "Windows":
# Windows下使用wmic
try:
import subprocess
result = subprocess.check_output(
'wmic cpu get name,NumberOfCores,NumberOfLogicalProcessors,MaxClockSpeed',
shell=True
).decode()
cpu_info['raw'] = result
except:
cpu_info['raw'] = "无法获取Windows CPU信息"
elif system == "Linux":
# Linux下读取 /proc/cpuinfo
try:
with open('/proc/cpuinfo', 'r') as f:
lines = f.readlines()
for line in lines:
if 'model name' in line:
cpu_info['model'] = line.split(':')[1].strip()
break
# 统计CPU核心数
core_count = sum(1 for line in lines if 'processor' in line)
cpu_info['cores'] = core_count
except FileNotFoundError:
cpu_info['raw'] = "无法读取/proc/cpuinfo"
elif system == "Darwin": # macOS
try:
import subprocess
result = subprocess.check_output(['sysctl', '-n', 'machdep.cpu.brand_string'])
cpu_info['model'] = result.decode().strip()
except:
cpu_info['raw'] = "无法获取macOS CPU信息"
return cpu_info
# 使用
print(get_cpu_info())
图形化系统信息显示
import psutil
import tkinter as tk
from tkinter import ttk
import threading
import time
class SystemMonitorApp:
def __init__(self, root):
self.root = root
self.root.title("系统监控器")
self.root.geometry("400x500")
# 创建显示标签
self.labels = {}
info_fields = ['CPU使用率', '内存使用率', '磁盘使用率']
for i, field in enumerate(info_fields):
frame = ttk.LabelFrame(root, text=field, padding=10)
frame.pack(fill='x', padx=10, pady=5)
self.labels[field] = ttk.Label(frame, text="等待数据...")
self.labels[field].pack()
# 开始更新
self.update_data()
def update_data(self):
# CPU信息
cpu_percent = psutil.cpu_percent(interval=1)
self.labels['CPU使用率'].config(
text=f"CPU使用率: {cpu_percent}%\n"
f"CPU核心数: {psutil.cpu_count()}"
)
# 内存信息
memory = psutil.virtual_memory()
self.labels['内存使用率'].config(
text=f"总内存: {memory.total / (1024**3):.2f} GB\n"
f"已使用: {memory.used / (1024**3):.2f} GB\n"
f"使用率: {memory.percent}%"
)
# 磁盘信息
disk_info = ""
for partition in psutil.disk_partitions():
usage = psutil.disk_usage(partition.mountpoint)
disk_info += f"{partition.device}: {usage.percent}%\n"
self.labels['磁盘使用率'].config(text=disk_info.strip())
# 每秒更新一次
self.root.after(2000, self.update_data)
# 运行GUI应用
root = tk.Tk()
app = SystemMonitorApp(root)
root.mainloop()
简洁版系统报告函数
import psutil
import platform
import datetime
def get_system_report():
"""生成系统信息报告"""
report = []
# 系统基本信息
report.append("=" * 50)
report.append("系统信息报告")
report.append("=" * 50)
report.append(f"时间: {datetime.datetime.now()}")
# 操作系统
report.append(f"\n--- 操作系统 ---")
report.append(f"系统: {platform.system()} {platform.version()}")
report.append(f"架构: {platform.machine()}")
report.append(f"主机名: {platform.node()}")
# CPU
report.append(f"\n--- CPU信息 ---")
report.append(f"物理核心: {psutil.cpu_count(logical=False)}")
report.append(f"逻辑核心: {psutil.cpu_count(logical=True)}")
report.append(f"当前使用率: {psutil.cpu_percent()}%")
# 内存
mem = psutil.virtual_memory()
report.append(f"\n--- 内存信息 ---")
report.append(f"总计: {mem.total / (1024**3):.2f} GB")
report.append(f"可用: {mem.available / (1024**3):.2f} GB")
report.append(f"使用率: {mem.percent}%")
# 磁盘
report.append(f"\n--- 磁盘信息 ---")
for part in psutil.disk_partitions():
usage = psutil.disk_usage(part.mountpoint)
report.append(f"{part.device}: {usage.percent}% 已使用")
# 网络
net = psutil.net_io_counters()
report.append(f"\n--- 网络信息 ---")
report.append(f"发送: {net.bytes_sent / (1024**2):.2f} MB")
report.append(f"接收: {net.bytes_recv / (1024**2):.2f} MB")
# 运行时间
boot_time = datetime.datetime.fromtimestamp(psutil.boot_time())
uptime = datetime.datetime.now() - boot_time
report.append(f"\n--- 运行时间 ---")
report.append(f"启动时间: {boot_time}")
report.append(f"已运行: {uptime.days}天 {uptime.seconds//3600}小时")
return "\n".join(report)
# 打印报告
print(get_system_report())
主要库说明
| 库/模块 | 用途 | 安装 |
|---|---|---|
os |
基础操作系统接口 | 内置 |
platform |
平台信息 | 内置 |
psutil |
全面系统和进程信息 | pip install psutil |
subprocess |
执行系统命令 | 内置 |
tkinter |
GUI界面 | 通常内置 |
推荐使用psutil,它是获取系统信息最全面、跨平台兼容性最好的Python库。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播