Ao gravar o retorno de carro em um console pycharm, a linha inteira é excluída?
Eu tenho um programa em Python que faz uso extensivo do caractere de avanço de linha para produzir o efeito de uma linha de console de atualização (especificamente uma barra de progresso).
Ao tentar depurar o código no PyCharm, vi que a barra de progresso não é impressa até que esteja pronta.
Após uma inspeção mais aprofundada, verificou-se que, quando um retorno de carro (\r
) for impressa, a linha inteira será excluída.
Como a própria biblioteca grava seqüências de caracteres do formulário ({line}\r
), Eu sempre recebo uma linha vazia.
Existe alguma maneira de resolver isso usando PyCharm? Atualmente, o que vou fazer é substituirstdout
com uma versão que registra a linha atual e a reimprime após o recebimento de um retorno de carro. No entanto, prefiro ter uma maneira simples de fazer isso.
Código de amostra:
import sys
sys.stdout.write('xxx')
sys.stdout.flush()
time.sleep(1)
sys.stdout.write('\rZZ')
sys.stdout.flush()
time.sleep(1)
sys.stdout.write('yyy\r')
sys.stdout.flush()
time.sleep(1)
print ('===')
Minha execução é assim:
1. 'xxx' é impresso
[Após 1 segundo]
2. 'ZZ' é impresso
[Após 1 segundo]
3. A linha é excluída
[Após 1 segundo]
4. '===' é impresso e o programa termina
Isso acontece na depuração e no console de execução ao executar este script.