2010-08-29 12 views
8

vergleichen:Warum wird sys.stdout.write (' b') nicht auf Zeilenumbrüche zurückgesetzt?

for item in range(0, 5): 
    sys.stdout.write('c') 
for item in range(0, 5): 
    sys.stdout.write('\b') 

Arbeiten, wie Sie es sich vorstellen, aber:

for item in range(0, 5): 
    sys.stdout.write('\n') 
for item in range(0, 5): 
    sys.stdout.write('\b') 

Sie immer noch mit fünf Zeilenumbrüche verlässt. Irgendwelche Ideen?

+1

Beiseite: Sie könnten auch ''\ b' * 5 'verwenden, um [5] eine Zeichenfolge aus 5 Zeichen zu erstellen (http://stackoverflow.com/a/1424016/1174169) anstatt über eine zu iterieren Angebot. – cod3monk3y

Antwort

16

Es mag heute vernünftig erscheinen, zu erwarten, dass die Rücktaste über Newline-Zeichen auf einer Konsole funktionieren kann, aber das wäre nicht abwärtskompatibel mit Teletypen, da es keinen umgekehrten Zeilenvorschub gibt.

+3

Dies machte mich nostalgisch für das Klappern eines Entwerfers, für nur etwa 120 ms. – msw

+0

In Anbetracht dessen können einige [http://stackoverflow.com/a/517207/1174169] nützlich sein, um eine Zeile in stdout einfach umzuschreiben. Synopsis: 'sys.stdout.write ('ccccc \')' was Ihnen hilft zu wissen, wie weit Sie sichern müssen, wenn Sie nur bis zum Zeilenende zurückgehen wollen. – cod3monk3y

4

Dies ist über das Verhalten von Konsolenfenstern: Backspaces funktionieren nur innerhalb einer Zeile, sie werden nicht über Zeilenumbrüche gesichert.

0

Das hat absolut nichts mit Python zu tun. Es ist Ihr Konsolentreiber, der alle visuellen Effekte verarbeitet. Die meisten von ihnen werden einen ASR33-Fernschreiber emulieren ... Rücktaste bedeutet, dass der Druckkopf, falls möglich, ein Feld zurück in Richtung Anfangsposition bewegt wird.

Verwandte Themen