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.
MKK
User
Beiträge: 10
Registriert: Dienstag 19. April 2005, 11:38
Kontaktdaten:

pprint() nicht auf stdout?

Beitragvon MKK » 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:

Beitragvon CM » 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

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

Beitragvon Leonidas » 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

Beitragvon 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>)

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]