Seite 1 von 1

Erweitertes print

Verfasst: Mittwoch 2. März 2011, 11:36
von Scriptonator
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ß

Re: Erweitertes print

Verfasst: Mittwoch 2. März 2011, 11:42
von jens

Re: Erweitertes print

Verfasst: Mittwoch 2. März 2011, 11:46
von Scriptonator
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ß

Re: Erweitertes print

Verfasst: Mittwoch 2. März 2011, 12:06
von hendrikS
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).

Re: Erweitertes print

Verfasst: Mittwoch 2. März 2011, 12:14
von snafu
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.

Re: Erweitertes print

Verfasst: Mittwoch 2. März 2011, 17:23
von Scriptonator
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.

Re: Erweitertes print

Verfasst: Mittwoch 2. März 2011, 17:46
von hendrikS
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.

Re: Erweitertes print

Verfasst: Mittwoch 2. März 2011, 18:02
von DasIch
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.

Re: Erweitertes print

Verfasst: Mittwoch 2. März 2011, 18:06
von Scriptonator
ich schau mich mal weiter um.
beispiele sind auch willkommen.
Danke :=)

Re: Erweitertes print

Verfasst: Mittwoch 2. März 2011, 18:06
von jens
hatte eins geliefert ;)