当前位置: 首页 > news >正文

使用 Python 打造一个轻量级系统信息查看器

    ╔══════════════════════════════════════════════════════════════╗║                    🐍 Python 系统信息查看器                    ║║                                                              ║║  ┌─────────────┐    ┌─────────────┐    ┌─────────────┐      ║║  │   系统信息   │───▶│   数据处理   │───▶│   报告生成   │      ║║  └─────────────┘    └─────────────┘    └─────────────┘      ║║                                                              ║║              轻量级 • 无依赖 • 跨平台                          ║╚══════════════════════════════════════════════════════════════╝

阅读: 约 8 分钟 | 字数: 2000+ | 更新: 2025-09-30
关键词: Python · 标准库 · Windows

在这里插入图片描述

引言

在日常开发和系统管理中,我们经常需要快速获取计算机的硬件和软件信息。虽然市面上有许多功能强大的系统信息工具,但它们往往体积庞大、依赖复杂。本文将介绍一个使用纯 Python 标准库编写的轻量级系统信息查看器,它无需安装任何第三方库,即可在 Windows 环境下运行,并生成一份详细的系统报告。

源码仓库: https://gitcode.com/2401_82619496/pythonlab_code/tree/main

功能概览

这个脚本的核心优势在于其 “绿色”“便携” 的特性:

┌─────────────────────────────────────────────────────────────┐
│                        功能架构图                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  基本系统信息 ──┐                                            │
│                │                                            │
│  磁盘使用情况 ──┤                                            │
│                │                                            │
│  网络配置信息 ──┼──▶ 数据收集器 ──▶ 格式化输出 ──▶ TXT报告    │
│                │                                            │
│  环境变量信息 ──┤                                            │
│                │                                            │
│  Python环境 ───┘                                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

核心特性

  • 基本系统信息: 获取操作系统版本、计算机名称、用户名等
  • 磁盘使用情况: 显示每个磁盘分区的总空间、已用空间和可用空间
  • 网络配置: 列出所有网络接口的 IP 地址和 MAC 地址
  • 环境变量: 展示当前系统的环境变量配置
  • 实时时间和启动时间: 显示系统当前时间和开机时间
  • Python 环境信息: 获取 Python 版本、解释器路径等
  • 报告生成: 将所有收集到的信息保存到一个 .txt 文件中,方便查阅和分享

运行效果预览

在这里插入图片描述

系统信息收集流程

启动程序
初始化收集器
开始收集
获取基本系统信息
获取磁盘使用情况
获取网络配置
获取环境变量
获取时间信息
获取Python环境
数据汇总
控制台显示
生成TXT报告
程序结束

核心代码解读

接下来,我们将深入探讨 simple_system_info.py 中的关键代码实现。

1. 获取基本系统信息

我们使用 platformos 模块来获取操作系统的基本信息。

💡 为什么选择 platform 模块?

platform 模块是 Python 标准库的一部分,专门用于获取平台相关信息。相比直接调用系统命令,它具有以下优势:

  • 跨平台兼容性好
  • 返回格式统一
  • 无需处理命令行输出解析
  • 性能开销小
import platform
import osdef get_basic_system_info():"""获取基本系统信息Returns:dict: 包含系统基本信息的字典"""info = {"操作系统": platform.system(),"操作系统版本": platform.version(),"操作系统发行版": platform.release(),"计算机名称": platform.node(),"处理器架构": platform.machine(),"处理器信息": platform.processor(),"当前登录用户": os.getlogin(),}return info

这段代码非常直观,通过调用 platform 模块的相应函数,我们可以轻松获取到关于操作系统的详细数据。

2. 获取磁盘使用情况

为了获取磁盘信息,我们遍历了从 ‘A’ 到 ‘Z’ 的所有盘符,并使用 os.path.exists 来检查盘符是否存在。

磁盘扫描流程:
A:\ ──▶ 检查存在性 ──▶ [存在] ──▶ 获取使用情况
B:\ ──▶ 检查存在性 ──▶ [不存在] ──▶ 跳过
C:\ ──▶ 检查存在性 ──▶ [存在] ──▶ 获取使用情况
...
Z:\ ──▶ 检查存在性 ──▶ [不存在] ──▶ 跳过
💡 为什么要遍历所有盘符?

在 Windows 系统中,磁盘驱动器以字母命名(A: 到 Z:)。通过遍历所有可能的盘符,我们可以:

  • 自动发现所有可用的磁盘驱动器
  • 无需预先知道系统有哪些磁盘
  • 适应不同的系统配置
  • 处理动态挂载的驱动器(如USB设备)
import os
import shutildef get_disk_info():"""获取所有磁盘的使用情况Returns:dict: 包含各磁盘使用情况的字典"""info = {}for i in range(ord('A'), ord('Z') + 1):vol = chr(i) + ':\\'if os.path.exists(vol):try:usage = shutil.disk_usage(vol)info[f"磁盘 {vol}"] = {"总空间": f"{usage.total / (1024**3):.2f} GB","已用空间": f"{usage.used / (1024**3):.2f} GB","可用空间": f"{usage.free / (1024**3):.2f} GB","使用率": f"{(usage.used / usage.total * 100):.1f}%"}except PermissionError:info[f"磁盘 {vol}"] = "无访问权限"return info

3. 获取网络信息

网络信息的获取稍微复杂一些。我们使用 socket 模块来获取本机的主机名和 IP 地址。

网络信息获取流程:
┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│ 获取主机名   │───▶│ 解析IP地址   │───▶│ 返回网络信息 │
└─────────────┘    └─────────────┘    └─────────────┘│                   │                   │socket.gethostname()  socket.gethostbyname()  组装结果
import socketdef get_network_info():"""获取网络配置信息Returns:dict: 包含网络配置的字典"""hostname = socket.gethostname()try:ip_address = socket.gethostbyname(hostname)except socket.gaierror:ip_address = "无法解析"info = {"主机名": hostname,"IP 地址": ip_address,}# 尝试获取更多网络接口信息try:import subprocessresult = subprocess.run(['ipconfig', '/all'], capture_output=True, text=True, creationflags=subprocess.CREATE_NO_WINDOW)if result.returncode == 0:info["详细网络配置"] = "已获取(详见报告文件)"except:passreturn info

数据显示与报告生成

为了提供更好的用户体验,脚本在控制台中使用了简单的进度条来展示信息收集的过程,并最终将所有信息汇总输出。

1. 在控制台显示信息

display_info_in_console 函数负责将收集到的信息格式化并打印到控制台。

def display_info_in_console(all_info):"""在控制台显示收集到的系统信息Args:all_info (dict): 包含所有系统信息的字典"""print("╔" + "═" * 50 + "╗")print("║" + " " * 18 + "系统信息概览" + " " * 18 + "║")print("╚" + "═" * 50 + "╝")for category, details in all_info.items():print(f"\n┌─ {category} " + "─" * (45 - len(category)))if isinstance(details, dict):for key, value in details.items():if isinstance(value, dict):print(f"│  📁 {key}:")for sub_key, sub_value in value.items():print(f"│    ├─ {sub_key}: {sub_value}")else:print(f"│  ▶ {key}: {value}")else:print(f"│  {details}")print("└" + "─" * 47)print("\n" + "═" * 50)print("信息收集完成")print("═" * 50)

2. 保存信息到文件

save_info_to_file 函数则负责将同样的信息写入到一个 .txt 文件中。文件名中包含了当前的时间戳,以确保每次运行生成的报告都是唯一的。

💡 为什么使用时间戳命名?

使用时间戳命名文件有以下好处:

  • 避免文件名冲突
  • 便于按时间排序查看历史报告
  • 可以追踪系统信息的变化趋势
  • 支持批量生成报告而不覆盖
import time
import osdef save_info_to_file(all_info):"""将系统信息保存到文件Args:all_info (dict): 包含所有系统信息的字典Returns:str: 生成的文件路径"""timestamp = time.strftime("%Y%m%d_%H%M%S")filename = f"system_info_report_{timestamp}.txt"with open(filename, 'w', encoding='utf-8') as f:f.write("╔" + "═" * 60 + "╗\n")f.write("║" + " " * 22 + "系统信息报告" + " " * 22 + "║\n")f.write("║" + " " * 18 + f"生成时间: {time.strftime('%Y-%m-%d %H:%M:%S')}" + " " * 18 + "║\n")f.write("╚" + "═" * 60 + "╝\n\n")for category, details in all_info.items():f.write(f"┌─ {category} " + "─" * (55 - len(category)) + "\n")if isinstance(details, dict):for key, value in details.items():if isinstance(value, dict):f.write(f"│  📁 {key}:\n")for sub_key, sub_value in value.items():f.write(f"│    ├─ {sub_key}: {sub_value}\n")else:f.write(f"│  ▶ {key}: {value}\n")else:f.write(f"│  {details}\n")f.write("└" + "─" * 57 + "\n\n")f.write("═" * 60 + "\n")f.write("报告生成完成\n")f.write("═" * 60 + "\n")print(f"\n✅ 报告已保存至: {os.path.abspath(filename)}")return filename

完整程序架构

simple_system_info.py 程序架构
├── 导入模块
│   ├── platform (系统信息)
│   ├── os (操作系统接口)
│   ├── shutil (磁盘使用情况)
│   ├── socket (网络信息)
│   └── time (时间处理)
├── 数据收集函数
│   ├── get_basic_system_info()
│   ├── get_disk_info()
│   ├── get_network_info()
│   ├── get_environment_info()
│   ├── get_time_info()
│   └── get_python_info()
├── 显示和输出函数
│   ├── display_progress()
│   ├── display_info_in_console()
│   └── save_info_to_file()
└── 主程序入口└── main()

使用示例

运行程序后,您将看到类似以下的输出:

╔══════════════════════════════════════════════════════════════╗
║                    系统信息收集中...                          ║
╚══════════════════════════════════════════════════════════════╝[1/6] 正在收集基本系统信息... ████████████████████████████████ 100%
[2/6] 正在收集磁盘使用情况... ████████████████████████████████ 100%
[3/6] 正在收集网络配置信息... ████████████████████████████████ 100%
[4/6] 正在收集环境变量信息... ████████████████████████████████ 100%
[5/6] 正在收集时间相关信息... ████████████████████████████████ 100%
[6/6] 正在收集Python环境... ████████████████████████████████ 100%✅ 信息收集完成!
✅ 报告已保存至: E:\开发\csdn\system_info_report_20241230_143022.txt

总结

通过这个项目,我们展示了如何仅使用 Python 标准库来构建一个实用的小工具。它不仅代码简洁、易于理解,而且功能专一、执行高效。

项目亮点

┌─────────────────────────────────────────────────────────────┐
│                        项目特色                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ✓ 零依赖      │  仅使用Python标准库,无需安装第三方包        │
│  ✓ 跨平台      │  支持Windows、Linux、macOS等主流系统        │
│  ✓ 轻量级      │  代码简洁,执行效率高                       │
│  ✓ 易扩展      │  模块化设计,便于添加新功能                 │
│  ✓ 用户友好    │  美观的控制台输出和详细的报告文件           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

对于那些希望在不引入额外依赖的情况下快速获取系统信息的用户来说,这无疑是一个绝佳的选择。

希望这篇文章能帮助你更好地理解如何利用 Python 与操作系统进行交互。如果你对这个项目感兴趣,可以从下面的源码仓库中获取完整代码,并根据自己的需求进行修改和扩展。


源码仓库: https://gitcode.com/2401_82619496/pythonlab_code/tree/main

🐧 感谢阅读!如果这篇文章对你有帮助,请点赞收藏支持一下!
📝 作者: 做运维的阿瑞

http://www.dtcms.com/a/427974.html

相关文章:

  • 旅游网站首页制作番禺核酸检测点有新调整
  • 最常用的js加解密之RSA-SHA256 加密算法简介与 jsjiami 的结合使用指南
  • 建站之星至尊版域名中的wordpress删除
  • 苹果软件混淆方式对比与场景化选择,源码混淆、成品包混淆与混合方案
  • 生产环境下oracle19c rac恢复节点2
  • 【VMware】VMware-workstation中,Ubuntu系统安装说明
  • 基于LMK04828的跨板级联时钟同步
  • 黄骅港客运站电话号码企业网站制作策划书
  • 图神经网络分享系列-transe(Translating Embeddings for Modeling Multi-relational Data) (二)
  • 安全的合肥网站建设中国建设银行移动门户
  • LVGL-UI工具
  • 长春网站建设推广网站建设佰金手指科杰二
  • 精益制造——解读麦肯锡集团精益生产与价值流图管理【附全文阅读】
  • 建站吗官方网站农产品网络营销模式
  • 苏宁易购网站设计怎么制作潍坊住房公积金个人查询入口
  • SeaTunnel 同步 KingBase 数据到 Easysearch
  • SSM基于Web的在线音乐网站935wk(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 自己做网站 需要哪些网站绑定别名好吗
  • 【设计模式】六大基本原则
  • dw做的手机端网站雄安网站建设单位
  • SpringBoot 统⼀功能处理
  • 建网站要多少费用南宁个人网站建设
  • JTCatch 缓存配置与使用
  • Android Jetpack 系列(六)WorkManager 任务调度实战详解
  • 1、docker入门简介
  • 个人小说网站怎么做娄底企业网站建设制作
  • 三层交换(h3c)
  • 网站有备案 去掉备案网页制作对联
  • 静态网站制作流程怎么查看网站收录
  • 迅为Hi3403V610开发板海思Cortex-A55架构核心板卡