为非惯用的 Python 道歉;更正欢迎,但这不是我的主要问题。
我正在使用 plistlib 更新应用程序包内 Info.plist 文件中的密钥。据我所知,从 Python 的角度来看,应用程序包只是一个名为“something.app”的目录。但是,我遇到了一个问题,调用 plistlib.load(fp) 然后更新密钥,然后 plistlib.dump(plist, fp) 将整个 plist 文件的 XML 内容附加到现有文件上,所以我最终得到一个文件,其中包含两个完整的 XML 树。
这是代码:
with open(plistPath, 'r+b') as fp:
plistRoot = plistlib.load(fp)
plistRoot["CFBundleIdentifier"] = newBundleId
plistlib.dump(plistRoot, fp)
我想我总是可以关闭文件上下文,删除文件,然后打开一个具有相同名称的新文件并写入该文件,但似乎没有必要这样做。