[Pythonmac-SIG] parsing system_profiler xml output

Bob Ippolito bob at redivi.com
Thu Nov 11 21:45:17 CET 2004


On Nov 11, 2004, at 15:32, eichin at metacarta.com wrote:

>
>> format" is probably really plist, since that's the DTD referred to in  
>> the
>> system_profiler output. Maybe there's a way to do this using plistlib
>> instead.
>
> plistlib as-shipped is missing a bunch of things; system profiler
> output fails on
>
>   File  
> "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/ 
> python2.3/plat-mac/plistlib.py", line 356, in begin_array
>     self.addObject(a)
>   File  
> "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/ 
> python2.3/plat-mac/plistlib.py", line 326, in addObject
>     assert self.root is value
> AssertionError

If this doesn't work with Python 2.4's plistlib, then the output of  
system profiler is not correct.  I'm at least 90% sure that Python  
2.4's plistlib correctly reads and writes all valid plists.

> which I've seen before but not traced.  iTunes plist importing also
> fails, but that's due to:
>
>>>> from xml.utils.iso8601 import parse
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
> ImportError: No module named utils.iso8601
>
> in plistlib.Date.__init__ and toString.  That's at least easy to
> kludge around - just copy the definition of plistlib.Date, and make it
> pass the date strings back as strings.

plistlib.Date, among other things, was broken before Python 2.4b2, even  
if you had PyXML installed.  Get the version from Python 2.4. (it is  
backwards compatible).

> (as for the other part, Python's XML story is wierd - when PyXML is
> installed it drops some new things into the xml namespace, so having
> "import xml" work doesn't actually tell you anything useful.)

import _xmlplus is the correct way to detect the presence of PyXML.

-bob



More information about the Pythonmac-SIG mailing list