Mudando texto após ser 'printado'

Bom dia/tarde/noite
Tudo bom com vocês?
Estou fazendo uma contagem no Python

  for i in range(10):
      print(i)
      sleep(1)

E de saída tenho:

 >    0
>     1
>     2
>     3
>     4
>     5
>     6
>     7
>     8
>     9

Minha duvida é:
Como eu faria para esse print sempre sair na mesma posição, isto é, substituir o valor anterior que foi printado?

Obrigado pela atenção <3

Python 2 ou 3? No 3 da pra fazer assim:

from time import sleep

for i in range(10):
      print(i, end='\r')
      sleep(1)

Parece que pra fazer funcionar no 2, basta adicionar ao top do arquivo o seguinte:

from __future__ import print_function`

Só que não pude testar.

1 curtida

isso pode depender do terminal

o \r é o que chamamos de “retorno de carro” pq em terminais antigos do tipo “teletipo” - que eram basicamente uma maquina de escrever - vc mandava isso para o carro voltar ao começo da linha. essa é a a origem do newline “\r\n” do windows enquanto o mundo unix utiliza apenas “\n”

se o terminal que vc utiliza suporta sequencias de escape ANSI então vc pode deixar o terminal colorido, posicionar em qualquer lugar da tela, etc, apenas escrevendo determinados bytes junto do texto.

1 curtida

No caso vc está se referindo aos caracteres usados pra representar um nova linha, né?

Neste caso, ele não precisa de uma nova linha, precisa apenas que o carro retorne.

Testei, usando Python 3, no Terminal no Ubuntu e no CMD no Windows 10 e o resultado foi como esperado.