OS X 上的 Python plistlib 追加而不是覆盖



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

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

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

相关内容

  • 没有找到相关文章