使用plistlib更新现有plist文件
我想用一个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 :(")