Seite 1 von 1

pprint() nicht auf stdout?

Verfasst: Freitag 22. April 2005, 14:52
von MKK
Hi!
Kann man den Pretty Printer auch in ein File oder einen String ausgeben lassen?
zb so:
Das funktioniert nicht. Liefert nur "none" zurück. Auf stdout wird die Ausgabe weiterhin ausgegeben.

Code: Alles auswählen

file1 = open("schreiben.txt","w")
  file1.write(css.pprint())
  file1.close()

Verfasst: Freitag 22. April 2005, 16:02
von CM
Hoi

verstehe die Frage nicht ganz: was ist css? Wie sieht das Traceback aus?

Aber Du kannst ja folgendes versuchen:

Code: Alles auswählen

f = open('test.txt','w')
xx = pprint.PrettyPrinter(stream=f,indent = 4)
xx.pprint(<object>)
Anstelle eines Fileobjektes kannst Du auch einen beliebigen anderen Stream nehmen. Default ist eben sys.stdout.

Aber wenn es immer noch nicht klappt, schreibe bitte eine etwas detailliertere Problembeschreibung.

Gruß,
Christian

Verfasst: Freitag 22. April 2005, 18:14
von Gast
danke!

inzwischen habe ich es mit StringIO() gelöst.

Code: Alles auswählen

toFile=StringIO.StringIO()
sys.stdout=toFile
#nun wird alle in toFile geprintet was onst in den stdout geschrieben wird.
sys.stdout=sys.__stdout__ #nicht vergessen ;)
a = toFile.getValue()
toFile.close()
Deine Variante könte für mich aber sogar praktischer sein. Ich werd's dann probieren.

Verfasst: Freitag 22. April 2005, 19:42
von Leonidas
Auf jeden Fall finde ich CMs Variante klarer, auch wenn StringIO machnchmal der letzte Ausweg ist.

Verfasst: Freitag 22. April 2005, 23:53
von BlackJack
Wenn Du die "pretty" Version in eine Zeichenkette umwandeln möchtest:

Code: Alles auswählen

a = pprint.pformat(<object>)