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 - [email protected]
http://mail.python.org/mailman/listinfo/pythonmac-sig