You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用plistlib生成plist文件时如何将字典插入另一字典

调整方案

你完全不需要修改现有生成patches列表的业务逻辑,仅需在最终组装plist根结构、写入文件之前加一层字典封装即可,改动量极小。

原代码逻辑参考(你现有代码大概率是这种写法)

import plistlib

# ====== 以下现有逻辑完全不用动 ======
# 你原来生成patches列表的代码,输出为每个元素是补丁字典的列表
patches = [
    {"Comment": "Patch 1", "Enabled": True, "Find": "xxxx", "Replace": "yyyy"},
    {"Comment": "Patch 2", "Enabled": False, "Find": "aaaa", "Replace": "bbbb"}
]
# ====== 以上现有逻辑完全不用动 ======

# 原组装Kernel节点的写法,导致patches每个元素直接作为Add的子项
kernel_config = {
    "Add": patches
}
root = {"Kernel": kernel_config}

# 写入plist
with open("config.plist", "wb") as f:
    plistlib.writePlist(root, f)

需要修改的部分

只需要调整Kernel节点中Add字段的赋值逻辑,把patches列表嵌套到你需要的外层字典中,再将外层字典作为单元素放入Add数组即可:

# 定义外层字典,把所有patches嵌套进去,外层字典的键名根据你需要的plist格式修改
patch_wrapper = {
    # 可以按需给外层字典加其他公共字段,比如Arch、Enabled之类的
    "Arch": "x86_64",
    "Enabled": True,
    "Patches": patches  # 把原有patches列表整体作为外层字典的一个键值
}

# 修改Add的赋值,把外层字典放在单元素列表里
kernel_config = {
    "Add": [patch_wrapper]
}

效果验证

  • 原输出结构:Kernel -> Add -> [补丁1字典, 补丁2字典, ...]
  • 调整后输出结构:Kernel -> Add -> [外层字典 -> Patches -> [补丁1字典, 补丁2字典, ...]]

Python 2.7 plistlib注意事项

  • 默认输出为XML格式plist,符合绝大多数场景的使用要求,如果需要二进制格式可以用plistlib.writePlistToBytes转换后写入文件
  • 生成后可以直接用Xcode或者plutil命令校验格式合法性:plutil -lint config.plist

内容的提问来源于stack exchange,提问作者Floren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:39:03