pprint() nicht auf stdout?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
MKK
User
Beiträge: 10
Registriert: Dienstag 19. April 2005, 11:38
Kontaktdaten:

Freitag 22. April 2005, 14:52

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()
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Freitag 22. April 2005, 16:02

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
Gast

Freitag 22. April 2005, 18:14

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.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 22. April 2005, 19:42

Auf jeden Fall finde ich CMs Variante klarer, auch wenn StringIO machnchmal der letzte Ausweg ist.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
BlackJack

Freitag 22. April 2005, 23:53

Wenn Du die "pretty" Version in eine Zeichenkette umwandeln möchtest:

Code: Alles auswählen

a = pprint.pformat(<object>)
Antworten