我正在使用plistlib在OS X中创建和更新一个简单的plist文件。挪威的测试人员从plistlib收到错误:
File "../axeomatic2/normal/build/pyi.darwin/aomDSP/out03-PYZ.pyz/plistlib", line 406, in parse
xml.parsers.expat.ExpatError: not well-formed (invalid token): line 1, column 8
查看在他的系统上生成的plist文件,我看到这样的字段穿插了预期的条目:
NSTableView Sort Ordering Array
...
NSTableView Hidden Columns Array
...
NSTableView Columns Array
...
NSNavLastRootDirectory Array
如果我从我的系统给他一个plist它工作正常,但是只要程序决定它需要从头创建一个它就会出错。
我想也许这是一个编码问题,但我们都在OS X 10.7上,并且都使用OS X版本的UTF-8。
有关可能发生的事情或我如何远程排除故障的任何想法?
答案 0 :(得分:3)
之前我遇到过类似的问题,在我尝试biplist之后,它已经解决了。
答案 1 :(得分:1)
自python 3.4以来,plistlib
已添加二进制plist支持。
https://docs.python.org/3.4/library/plistlib.html
答案 2 :(得分:0)
实际上有两类plist
格式。一个是简单的XML文件(plistlib
知道如何使用expat
进行解析),另一个是binary property list
。
不幸的是,它们都共享相同的后缀.plist
,并且Apple的所有工具都透明地对待它们(例如,您不知道是否正在使用XML plist或二进制plist,使用{{}等工具1}})
就像@northtree所说,defaults
包是读取/写入二进制plist文件的正确工具。
更新:
您还可以使用OSX附带的biplist
将任何plutil(1)
文件转换回XML格式,然后由plist
处理
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/plutil.1.html