Estoy usando plistlib para crear y actualizar un archivo de plist simple en OS X. Un probador en Noruega está recibiendo un error de 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
Al mirar el archivo plist que se generó en su sistema, veo campos como este intercalados con las entradas esperadas:
NSTableView Sort Ordering Array ... NSTableView Hidden Columns Array ... NSTableView Columns Array ... NSNavLastRootDirectory Array
Si le doy una lista de mi sistema, funciona bien, pero cada vez que el progtwig decide que necesita crear uno desde cero, obtiene un error.
Pensé que tal vez era un problema de encoding, pero ambos estamos en OS X 10.7 y ambos estamos usando la versión OS X de UTF-8.
¿Alguna idea sobre lo que podría estar sucediendo, o cómo podría solucionar esto de forma remota?
Tuve un problema similar antes, después de probar biplist , se resolvió.
Se ha agregado soporte de binarios binarios a plistlib
desde python 3.4. https://docs.python.org/3.4/library/plistlib.html
En realidad hay dos categorías de formato plist
Uno es en realidad un archivo XML simple (que plistlib
sabe cómo analizar con un expat
), el otro es la binary property list
.
Desafortunadamente, ambos comparten el mismo sufijo .plist
, y todas las herramientas de Apple los tratan de manera transparente (por ejemplo, no sabe si está trabajando con una lista XML o una lista binaria, usando herramientas como defaults
)
Como dijo @northtree, el paquete biplist
es la herramienta correcta para leer / escribir el archivo plist binario.
ACTUALIZAR:
También puede usar plutil(1)
que viene con OSX para convertir cualquier archivo plist
nuevo al formato XML, y luego procesado por plistlib
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/plutil.1.html