2013-08-15 8 views
7

mogę iść z powrotem za pomocą jednego caracter \b:Co mogę użyć, aby przejść jedną linię break back w terminalu w Pythonie?

>>> print("123#456") 
123#456 
>>> print("123#\b456") 
123456 

Ale to nie działa, jeśli przerwa linia jest zaangażowany:

>>> print("123#\n456") 
123# 
456 
>>> print("123#\n\b456") 
123# 
456 

Czy istnieje sposób, aby przejść z powrotem linia złamać?

pytam to bo mam postęp w poprzedniej linii:

53%

i używam \b zaktualizować wartość. Ale jeśli ktoś coś drukuje, to go psuje. Próbowałem utworzyć bufor ciągów i drukować enought "\ b", aby to zrekompensować, a następnie wydrukować bufor z powrotem. Ale nie działa, jeśli istnieją podziały wiersza.

+0

Generalnie unikasz drukowania nowej linii lub używasz przekleństw. W domyślnym trybie tekstowym zorientowanym wierszem w systemach POSIX nie można przywrócić znaku nowej linii. –

+0

To samo zachowanie dla * wszystkich * pasków postępu dla narzędzi wiersza polecenia. Użyj 'wget', aby uzyskać duży plik, a następnie naciśnij enter podczas pobierania. –

+0

input.replace ('\ n', '') - czy to pomoże? –

Odpowiedz

9

Jednym z możliwych (nieco hackowskich) rozwiązań jest użycie '\ 033 [1A', aby powrócić do jednej linii. Zastąp 1 liczbą linii, aby odskoczyć. Istnieje kilka innych sekwencji pomocniczych, którymi możesz manipulować kursorem. Sprawdź pełną listę pod adresem: http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html

- Position the Cursor: 
    \033[<L>;<C>H 
    Or 
    \033[<L>;<C>f 
    puts the cursor at line L and column C. 
- Move the cursor up N lines: 
    \033[<N>A 
- Move the cursor down N lines: 
    \033[<N>B 
- Move the cursor forward N columns: 
    \033[<N>C 
- Move the cursor backward N columns: 
    \033[<N>D 

- Clear the screen, move to (0,0): 
    \033[2J 
- Erase to end of line: 
    \033[K 

- Save cursor position: 
    \033[s 
- Restore cursor position: 
    \033[u 

Zauważ, że to prawdopodobnie nie będzie działać na wszystkich terminalach.

Powiązane problemy