3

我正在使用 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 上,并且都使用 UTF-8 的 OS X 版本。

关于可能发生的事情,或者我如何远程解决这个问题的任何想法?

4

3 回答 3

3

我之前遇到过类似的问题,在我尝试biplist之后,它已经解决了。

于 2012-12-06T10:23:35.147 回答
1

plistlib自 python 3.4 以来 ,已添加二进制 plist 支持。https://docs.python.org/3.4/library/plistlib.html

于 2014-09-01T04:55:39.403 回答
0

实际上有两类plist格式。一个实际上是简单的 XML 文件(plistlib知道如何用 解析expat),另一个是binary property list.

不幸的是,它们都共享相同的后缀.plist,Apple 的所有工具都透明地对待它们(例如,您不知道您使用的是 XML plist 还是二进制 plist,使用类似的工具defaults

就像@northtree 所说,该biplist软件包是读取/写入二进制 plist 文件的正确工具。

更新:

您还可以使用plutil(1)OSX 自带的将任何plist文件转换回 XML 格式,然后由plistlib

https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/plutil.1.html

于 2013-12-23T08:43:09.050 回答