Hallo,
ich versuche mich gerade in Python einzuarbeiten und habe eine Frage zur Ausgabe in der Shell. Wie ist es möglich z.B. die Ausgabe eine For-Schleife in eine Zeile zu bekommen? D.h. nicht so:
1
2
3
4
5
6
....
sondern bei jedem Schleifendurchlauf die vorhergehende Ziffer löschen und die aktuelle Ziffer an diese Position zu schreiben.
Viele Grüße
OEP
Print-Ausgabe an gleicher Stelle
Code: Alles auswählen
In [1]: for i in range(6):
...: print i,
...:
...:
0 1 2 3 4 5
In [2]: import sys
In [3]: for i in range(6):
...: sys.stdout.write("%s" % i)
...:
...:
012345
nee,
ich meinte, die neue Ziffer an die gleiche Stelle der zuvor ausgegebenen.
Null ausgeben -> nächster Schleifendurchlauf Null löschen und an die Stelle die Eins schreiben usw., so dass zuletzt nur die letzte Ziffer der Schleife angezeigt wird
Mfg
OEP
ich meinte, die neue Ziffer an die gleiche Stelle der zuvor ausgegebenen.
Null ausgeben -> nächster Schleifendurchlauf Null löschen und an die Stelle die Eins schreiben usw., so dass zuletzt nur die letzte Ziffer der Schleife angezeigt wird
Mfg
OEP
Vielleicht eher sowas:
Gruß,
Manuel
Code: Alles auswählen
>>> import sys
>>> for i in range(6):
... sys.stdout.write("\r%i" % i)
...
5
Manuel
Code: Alles auswählen
In [7]: for i in xrange(5):
time.sleep(0.5)
sys.stdout.write("\r%d" % i)
...: sys.stdout.flush()
...:
...:
Für solch Operationen würd ich mir vielleicht mal curses mal ansehen (oder Wconio für Windows)... damit lassen sich kompliziertere Textaufgaben auf'r Konsole besser lösen.
Aber *einfache* Sachen lassen sich mit `curses` *komplizierter* lösen. Also bei dieser Problembeschreibung würde ich bei '\r' bleiben.
Funktioniert bei mir alles nicht.
Übrigens:
Das habe ich seit Python 3.0.
Übrigens:
Code: Alles auswählen
>>> import curses
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import curses
File "C:\Python30\lib\curses\__init__.py", line 15, in <module>
from _curses import *
ImportError: No module named _curses
Bei mir funktioniert es mit Python 3.0:bremer hat geschrieben:Funktioniert bei mir alles nicht.
[Code s.o.]
Das habe ich seit Python 3.0.
Code: Alles auswählen
ActivePython 3.0.0.0 (ActiveState Software Inc.) based on
Python 3.0 (r30:67503, Dec 10 2008, 15:46:42)
[GCC 3.3.1 (SuSE Linux)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import curses
>>>
Zuletzt geändert von numerix am Mittwoch 7. Januar 2009, 17:14, insgesamt 1-mal geändert.
Das bezweifle ich aber stark. Zumindest unter Windows. Oder du hattest etwas wie WCurses installiert.bremer hat geschrieben:Das habe ich seit Python 3.0.Code: Alles auswählen
>>> import curses Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> import curses File "C:\Python30\lib\curses\__init__.py", line 15, in <module> from _curses import * ImportError: No module named _curses
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
`curses` gibt's nicht unter Windows, jedenfalls nicht in der Standardbibliothek und für '\r' muss das Programm, welches die Ausgabe entgegennimmt, das natürlich entsprechend interpretieren. Eingebettete Interpreter in IDEs oder IDLE machen das nicht, da braucht man schon ein Terminal o.ä. für.
Also mit anderen Worten: Eine wirklich allgemeine Lösung gibt's nicht.
Das mit dem '\r' ist aber üblich bei Konsolenprogrammen, die nicht gleich die volle Kontrolle über's Terminal haben wollen.
Also mit anderen Worten: Eine wirklich allgemeine Lösung gibt's nicht.
Das mit dem '\r' ist aber üblich bei Konsolenprogrammen, die nicht gleich die volle Kontrolle über's Terminal haben wollen.