Thursday, February 23, 2006

List user defaults in MacOS X

The small script below uses PyObjC (it was born as a snippet in ipython to have a quick check to a pair of variables). Of course you can write the very same thing in ObjectiveC.

I strongly encourage to install PyObjC and ipython even if you do work with Cocoa and ObjectiveC, since you can use that to prototype your application and to test snippets of code.

#!/usr/bin/python

# -*- coding: utf-8 -*-

import sys

import Foundation

ud = Foundation.NSUserDefaults.standardUserDefaults()

d = ud.dictionaryRepresentation()

for k in d:

sys.stdout.write(k)

sys.stdout.write(":\t")

try:

print d[k]

except UnicodeEncodeError, e:

print d[k].encode('utf-8')

To have more information on PyObjC (that is to say Cocoa bindings for Python), go here.

You can find ipythonhere. ipython in an improved interactive shell, with powerful introspection capabilities. Since MacOS X Python by default comes with no support for readline, I advise to install the missing module for Python 2.3 (search google, I don't remember right now where to find it) or better install this version of Python 2.4, complete with the patch (on the same page).Of course you must set your path so that the "first" python is the new one (if you set PYTHON_ROOT and such, you must also fix them).

Remember when you "python setup.py install" a module (that is the typical command line to install a python package), it is installed for the python version called by default (find it out with which pyhon)

No comments: