plistlib更新现有的plist文件

时间:2014-06-10 02:11:16

标签: python macos plist

我想更新现有的" info.plist"使用python脚本在运行时文件。我正在使用plistlib模块来实现它。但是,在更新" Info.plist"

中的现有值时,我遇到了问题

这是我到目前为止所尝试的内容

导入plistlib

try:
    p = plistlib.readPlist(filePath)
    newValue = { "ApplicationID" : "com.test.abc"}

    if "ApplicationID" in p:
        p["ApplicationID"].extend(newValue)
    else:
        p["ApplicationID"] = newValue   
    plistlib.writePlist(p, filePath)
except:
    print "Error plist file"

如果应用程序ID不存在,那么此代码应该向plist文件添加一个条目,但如果它已经存在于Info.plist中,我应该得到一个异常和"错误plist文件"应该打印出来。

你能帮我诊断一下这段代码中的错误吗?

环境使用:

Python版本:2.7
MacOSX的

1 个答案:

答案 0 :(得分:1)

好的,在重新阅读你的问题后,我想你只想这样做:

import plistlib

p = plistlib.readPlist(filePath)
if "ApplicationID" in p:
    print "Error plist file"
else:
    p["ApplicationID"] = "com.test.abc"
    plistlib.writePlist(p, filePath)

只要您的plist已经是XML格式,这将有效。如果你真的想提出异常,你可以在print语句之后或代替print语句。

---编辑以回应评论---

嗯,这就是我最初对代码的期望,但是下面的描述表示如果它已经存在则需要例外,所以我认为我错了:)

在这种情况下,你只需要这样做:

import plistlib

try:
    p = plistlib.readPlist(filePath)
    p["ApplicationID"] = "com.test.abc"
    plistlib.writePlist(p, filePath)
except:
    print("Oh no!  Failure :(")