On May 7, 2005, at 12:13 PM, Florian Munz wrote: > since the format of plist files changed to binary by default on > Tiger my little program, which works on xml plists doesn't work > anymore. > > Is there a way to convert a binary plist to xml with Python or PyObjC? > > I know this on the command line: > > plutil -convert xml1 Bookmarks.plist > > but I'm searching a way to do this directly.
In [1]: from Foundation import * In [2]: import os In [3]: plist, format, error = NSPropertyListSerialization.propertyListFromData_mutabilityOption_format_errorDescription_(NSData.dataWithContentsOfMappedFile_(os.path.expanduser('~/Library/Preferences/com.apple.keychainsync.plist')), NSPropertyListImmutable, 0) In [4]: plist Out[4]: {KeychainSyncList = (); } In [5]: data, error = NSPropertyListSerialization.dataFromPropertyList_format_errorDescription_(plist, NSPropertyListXMLFormat_v1_0) In [6]: data.writeToFile_atomically_('foo.plist', False) Out[6]: 1 In [7]: print file('foo.plist').read() <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>KeychainSyncList</key> <array/> </dict> </plist> -- Nicholas Riley <[EMAIL PROTECTED]> | 4111 Siebel Center Department of Computer Science | 201 N. Goodwin Ave. and Medical Scholars Program | Urbana, IL 61801-2302 Univ. of Illinois at Urbana-Champaign | +1 217 244 2274 _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig