andrew-pythonlist at puzzling.org
Mon Feb 3 11:02:58 CET 2003
On Mon, Feb 03, 2003 at 07:25:30PM +1000, Derek Thomson wrote:
> Hi Andrew,
> Andrew Bennetts wrote:
> > On Mon, Feb 03, 2003 at 11:47:38AM +1000, Derek Thomson wrote:
> >>I know Python has pprint, but that stops when it encounters an object
> >>ie. it only dumps sequences and hashes, which is less than what I want.
> > The problem is harder than it seems... simply recursively printing the
> > objects and their contents won't work for cyclic objects, so for many data
> > structures, you *need* something that can cope with this, like pickle.
> No, I'm aware of this issue. Perl's Data::Dumper just deals with it :)
Yes, but I don't know (much) Perl, so I didn't know what it could do, so
saying "I want Data::Dumper for Python" didn't help me much :)
> > There are other pickle alternatives too, like an XMLPickle, iirc.
> Yes, but I need human readable, not XML! :)
> I guess twisted.spread.jelly is an option, but I'd prefer it if the output
> were just Python - then there's no need to learn a new notation.
> Anyway, thanks heaps.
There's also twisted.persisted.aot, which does serialise to Python code that
will reconstruct the objects. But Jelly's notation is really quite
>>> from twisted.spread import jelly
>>> class C:
>>> class D:
>>> c = C()
>>> c.d = D()
>>> c.foo = 'bar'
>>> c.d.baz = 'quux'
>>> c.x = 1
['__main__.C', ['dictionary', ['x', 1], ['foo', 'bar'], ['d', ['__main__.D', ['dictionary', ['baz', 'quux']]]]]]
Ok, that's a bit hard to follow on one line like that... so lets pprint it:
>>> from pprint import pprint
['d', ['__main__.D', ['dictionary', ['baz', 'quux']]]]]]
For comparison, t.p.aot does this:
>>> from twisted.persisted import aot
>>> print aot.jellyToSource(c)
More information about the Python-list