为非惯用的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 语句重新打开文件进行写入来解决。