import psutil
# 获取并保存系统硬件信息到"系统信息.txt"
with open("系统信息.txt", "w", encoding="utf-8") as sys_info_file:
memory_info = psutil.virtual_memory()
sys_info_file.write(f"总内存: {memory_info.total / (1024.0 ** 3):.2f} GB\n")
sys_info_file.write(f"可用内存: {memory_info.available / (1024.0 ** 3):.2f} GB\n")
sys_info_file.write(f"已用内存: {memory_info.percent:.2f}%\n\n")
cpu_percent = psutil.cpu_percent(interval=1)
sys_info_file.write(f"\nCPU使用率: {cpu_percent:.2f}%\n")
cpu_count_logical = psutil.cpu_count(logical=True)
cpu_count_physical = psutil.cpu_count(logical=False)
sys_info_file.write(f"逻辑CPU核心数: {cpu_count_logical}\n")
sys_info_file.write(f"物理CPU核心数: {cpu_count_physical}\n\n")
for part in psutil.disk_partitions():
try:
usage = psutil.disk_usage(part.mountpoint)
sys_info_file.write(f"\n磁盘: {part.device}\n")
sys_info_file.write(f"挂载点: {part.mountpoint}\n")
sys_info_file.write(f"总空间: {usage.total / (1024.0 ** 3):.2f} GB\n")
sys_info_file.write(f"已用空间: {usage.used / (1024.0 ** 3):.2f} GB\n")
sys_info_file.write(f"剩余空间: {usage.free / (1024.0 ** 3):.2f} GB\n")
sys_info_file.write(f"磁盘使用率: {usage.percent:.2f}%\n")
except PermissionError:
continue
# 收集进程信息到一个列表中,并按照CPU和内存占用率降序排列
process_data = []
for process in psutil.process_iter(['pid', 'name', 'exe', 'memory_info', 'cpu_percent']):
try:
pinfo = process.info
exe_path = pinfo['exe']
if exe_path is not None:
exe_path = exe_path.replace("\\", "/")
else:
exe_path = "未知"
mem_info = pinfo['memory_info']
memory_usage_bytes = mem_info.rss
total_memory = psutil.virtual_memory().total
memory_usage_percent = (mem_info.rss / total_memory) * 100
process_data.append((pinfo['pid'],
pinfo['name'],
exe_path,
memory_usage_bytes / (1024 ** 2), # 转换为MB
memory_usage_percent,
pinfo['cpu_percent']))
except (psutil.NoSuchProcess, psutil.AccessDenied, KeyError):
continue
sorted_processes = sorted(process_data, key=lambda x: (-x[5], -x[3]))
# 获取并保存按占用率排序的进程信息到"进程信息.txt"
with open("进程信息.txt", "w", encoding="utf-8") as process_info_file:
for pid, name, exe_path, memory_usage_mb, memory_usage_percent, cpu_percent in sorted_processes:
process_info_file.write(f"进程ID: {pid}\n")
process_info_file.write(f"进程名: {name}\n")
process_info_file.write(f"执行路径: {exe_path}\n")
process_info_file.write(f"内存占用量: {memory_usage_mb:.2f} MB\n")
process_info_file.write(f"内存占用率: {memory_usage_percent:.2f}%\n")
process_info_file.write(f"CPU占用率: {cpu_percent:.2f}%\n\n")
【python】获取系统信息及进程并分别保存txt
最新推荐文章于 2024-08-08 15:03:50 发布