0

为非惯用的 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)

我想我总是可以关闭文件上下文,删除文件,然后打开一个具有相同名称的新文件并写入该文件,但似乎没有必要这样做。

4

1 回答 1

0

通过使用第二个 with-as 语句重新打开文件进行写入来解决。

于 2018-04-16T18:31:43.587 回答