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

Reply via email to