一、功能介绍
这段代码的功能是收集并展示计算机系统的详细信息,包括操作系统、版本、架构、处理器等硬件信息以及内存和磁盘的使用情况。下面是代码的详细说明:
代码功能概述
-
获取系统信息 (
get_system_info
函数): 这个函数负责收集系统的信息,包括操作系统名称、版本、架构、处理器型号、物理核心数、逻辑处理器数、总内存和可用内存等。 -
磁盘使用情况 (
get_system_info
函数的一部分): 对于每个磁盘分区,该函数会获取其总容量、已用空间和剩余空间,并将这些信息存储在一个字典中。 -
打印系统信息 (
print_system_info
函数): 这个函数用于格式化并打印从get_system_info
函数中获取的数据。它会按照一定的格式输出每项信息,对于磁盘使用情况则进一步细分展示每个分区的信息。
代码结构详解
-
导入必要的模块:
platform
: 用于获取操作系统相关的详细信息。psutil
: 提供了跨平台的方法来获取进程和系统利用率(CPU、内存、磁盘、网络等)的信息。
-
定义
get_system_info
函数:- 使用
platform
模块获取操作系统、版本、架构、处理器等信息。 - 使用
psutil
模块获取 CPU 核心数、逻辑处理器数、内存使用情况。 - 遍历所有磁盘分区,获取每个分区的总容量、已用空间和剩余空间。
- 使用
-
定义
print_system_info
函数:- 打印标题和分隔线。
- 遍历收集到的信息字典,并根据数据类型进行格式化输出。
- 如果遇到磁盘使用情况的子字典,则进一步展示每个磁盘分区的详细信息。
-
主执行部分 (
if __name__ == "__main__":
):- 调用
get_system_info
函数获取系统信息。 - 调用
print_system_info
函数打印收集到的信息。
- 调用
二、代码
python
import platform
import psutil
def get_system_info():
info = {}
info['操作系统'] = platform.system()
info['系统版本'] = platform.version()
info['架构'] = platform.architecture()[0]
info['机器类型'] = platform.machine()
info['处理器'] = platform.processor()
info['物理核心数'] = psutil.cpu_count(logical=False)
info['逻辑处理器数'] = psutil.cpu_count(logical=True)
info['总内存 (GB)'] = round(psutil.virtual_memory().total / (1024 ** 3), 2)
info['可用内存 (GB)'] = round(psutil.virtual_memory().available / (1024 ** 3), 2)
# 获取磁盘分区及其使用情况
disk_usage = {}
for partition in psutil.disk_partitions():
try:
usage = psutil.disk_usage(partition.mountpoint)
disk_usage[partition.device] = {
'总容量 (GB)': round(usage.total / (1024 ** 3), 2),
'已用空间 (GB)': round(usage.used / (1024 ** 3), 2),
'剩余空间 (GB)': round(usage.free / (1024 ** 3), 2),
}
except PermissionError:
# 可能会遇到权限问题,忽略这些分区
continue
info['磁盘使用情况'] = disk_usage
return info
def print_system_info(info):
print("计算机系统信息:")
print("-" * 30)
for key, value in info.items():
if isinstance(value, dict):
print(f"{key}:")
for sub_key, sub_value in value.items():
if isinstance(sub_value, dict):
print(f" {sub_key}:")
for sub_sub_key, sub_sub_value in sub_value.items():
print(f" {sub_sub_key}: {sub_sub_value} GB")
else:
print(f" {sub_key}: {sub_value} GB")
else:
print(f"{key}: {value}")
if __name__ == "__main__":
system_info = get_system_info()
print_system_info(system_info)