使用plistlib更新现有plist文件

0 投票
1 回答
2906 浏览
提问于 2025-04-18 09:14

我想用一个Python脚本在运行时更新现有的“info.plist”文件中的一个值。我正在使用plistlib模块来实现这个功能。不过,在更新“Info.plist”中的现有值时,我遇到了一些问题。

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

import 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中存在,我应该会收到一个异常,并且会打印出“Error plist file”。

你能帮我找出这段代码有什么问题吗?

使用环境:

Python版本:2.7
MacOSX

1 个回答

2

好的,重新看了一下你的问题,我觉得你其实只是想这样做:

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格式的,这样就可以正常工作。如果你真的想要抛出一个异常,可以在打印语句之后或者代替它来实现。

--- 针对评论的编辑 ---

嗯,这其实是我最开始对代码的预期,但你下面的描述说如果已经存在就想要抛出异常,所以我以为我理解错了 :)

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

import plistlib

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

撰写回答