Erweitertes print

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
Scriptonator
User
Beiträge: 14
Registriert: Mittwoch 23. Februar 2011, 18:16

Ich hab mal eine Frage, ob es sowas wie ein "Erweitertes print" gibt.

1.Mich würde interessieren, ob man z.B. die Schriftfarbe ändern kann.

2.Gibt es eine Möglichkeit ein "print" zu updaten? D.h. das man sozusagen eine Lade-Zeile hat, welche einen Status anzeigt. Wenn man das normal mit "print" macht, dann wird dazu immer eine neue Zeile geschrieben, also bei 100% in 1% Schritten sind es dann 100 Zeilen. Ich würd das aber gerne in 1 Zeile behalten.

Gruß
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:


GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Scriptonator
User
Beiträge: 14
Registriert: Mittwoch 23. Februar 2011, 18:16

Zu 1.
Danke, ich dachte das geht vlt. etwas einfacher :=)

Zu 2.
Vielen Dank =)

EDIT:
zu 2tens, wie muss das dann genau aussehen?

Code: Alles auswählen

print "\rHallo1"
print "\rHallo2"
gruß
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Zu 2.)
Die einfachste Methode das newline zu unterdrücken ist einfach ein Komma hinten anfügen.

Code: Alles auswählen

for i in 1,2,3:print i,
Wird aber ein Space eingefügt. Sonst könnte man mit Listen und join arbeiten. Dann ibt es noch die write Funktion (sys.stdout.write).
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ein "farbiges" `print` hat der Autor von termcolor kürzlich implementiert. Das könnte man dann beispielsweise so anwenden:

Code: Alles auswählen

from __future__ import print_function
from termcolor import cprint as print

print('Spam', color='red')
Der Future-Import fällt unter Python 3 natürlich weg und selbstredend ist `print` von da an eine Funktion.
Scriptonator
User
Beiträge: 14
Registriert: Mittwoch 23. Februar 2011, 18:16

hendrikS hat geschrieben:Zu 2.)
Die einfachste Methode das newline zu unterdrücken ist einfach ein Komma hinten anfügen.

Code: Alles auswählen

for i in 1,2,3:print i,
Wird aber ein Space eingefügt. Sonst könnte man mit Listen und join arbeiten. Dann ibt es noch die write Funktion (sys.stdout.write).
Aber so, wird der Text nur hinten angehängt.

ich wollte eig sowas:
Es wurden schon x von y Zeilen gelesen.
Und es soll das x mit jedem Schleifendurchlauf erhöht werden, ohne eine neue Zeile in die Konsole zu schreiben.
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Scriptonator hat geschrieben:Es wurden schon x von y Zeilen gelesen.
Und es soll das x mit jedem Schleifendurchlauf erhöht werden, ohne eine neue Zeile in die Konsole zu schreiben.
Verstehe jetzt, was Du erreichen willst. Das geht aber nicht so einfach. Unter Linux womöglich mit der curses Bibliothek. Unter Windows weiss ich nicht so recht. Vielleicht wissen andere mehr.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Dazu musst du direkt auf den Stream `sys.stdout` bzw. `sys.stderr` zugreifen. Am einfachsten ist es man nutzt termcolor, colorama oder eine der zig anderen Libraries im cheeseshop.
Scriptonator
User
Beiträge: 14
Registriert: Mittwoch 23. Februar 2011, 18:16

ich schau mich mal weiter um.
beispiele sind auch willkommen.
Danke :=)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

hatte eins geliefert ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten