Python获取Steam平台安装游戏信息

如何在 Windows 上自动发现 Steam 安装路径,并枚举所有已安装游戏呢?

  • 通过注册表定位 Steam
  • 解析 VDF 配置
  • 扫描 manifest 文件
  • 构建结构化游戏数据。

项目整体架构(Architecture)

架构图

架构设计

分层职责

层级 职责
输入层 提供系统数据来源(注册表 + 配置文件 + manifest)
解析与发现层 将"系统信息"转化为"可遍历路径"
核心逻辑层 扫描并提取游戏信息
输出层 提供统一结构的数据

模块协作逻辑

  1. 路径发现(注册表)
    → 获取 Steam 根目录
  2. 库发现(VDF)
    → 找到所有游戏库路径(多盘支持)
  3. 游戏扫描(ACF)
    → 遍历每个库中的 manifest
  4. 信息提取
    → 构建统一数据结构

核心流程

流程图


配置 / 输入

输入来源抽象

python 复制代码
注册表 → 安装路径
VDF     → 库路径列表
ACF     → 游戏元数据

数据结构设计

python 复制代码
games = {
    appid: {
        "name": str,
        "path": str,
        "size": int,
    }
}

设计

  • 使用 dict
    • O(1) 查询
    • 易序列化(JSON)
  • appid 为 key:
    • 全局唯一
    • 与 Steam 生态一致

VDF 解析器

解析流程

手动解析原因

原因 说明
VDF 非标准格式 无法直接 JSON.parse
嵌套结构 需手动解析
可复用性 可用于所有 Steam 配置

游戏扫描核心逻辑:

python 复制代码
for lib in libraries:
    for manifest in steamapps:
        parse(manifest)
        extract(game_info)

运行 / 使用 / 验证

1. 运行环境

  • Windows
  • Python 3.x

2. 运行

python 复制代码
python steam_helper.py

或在代码中调用:

python 复制代码
from steam_helper import get_installed_games

games = get_installed_games()
print(games)

3. 示例输出

python 复制代码
{
  "570": {
    "name": "Dota 2",
    "path": "D:\\SteamLibrary\\steamapps\\common\\dota 2 beta",
    "size": 25000000000
  }
}
相关推荐
满怀冰雪30 分钟前
24-PaddleClas 模型评估、导出与推理部署入门
大数据·人工智能·python·深度学习·paddle
DeepVisionary6 小时前
谷歌 Gemini Omni 1.1 Flash 正式发布:4K 视频、40 秒场景延伸,视频生成进入按 token 计费时代
python·自动化
阡之尘埃7 小时前
Python数据分析案例85——大模型微调全流程(SFT的LoRA微调)
人工智能·python·深度学习·语言模型·llm·微调·千问
海兰7 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(三)
javascript·python·金融
cvcode_study7 小时前
Ollama+ComfyUI 多模态
大数据·人工智能·python
星核0penstarry8 小时前
试一试用gr.Workflow把AI多步骤串联变成可视化画布
人工智能·python·ai作画·api·ai编程·工作流·api聚合平台
taller_20008 小时前
【005】PiE 与传统 VBA 的核心区别
python·vba·pie·py
海兰9 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(一)
javascript·python·金融
大衛說9 小时前
《Python 从入门到精通》系列总览与学习路线
开发语言·python·学习
小猴子爱上树9 小时前
跨境电商翻译工具推荐:批量图片翻译、视频字幕翻译、智能抠图一站式搞定
人工智能·python·音视频