Python no modo raw print stdin adiciona espaços
Eu precisava mudar a entrada padrão para o modo não-buffer em Python, para que eu possa ler caracteres únicos dela. Consegui fazê-lo funcionar, mas agora a saída padrão está quebrada: de alguma forma parece que após o caractere de nova linha, alguns caracteres de espaço são emitidos, zero na primeira linha, 3 na segunda, 6 na terceira, etc, assim :
ASD
ASD
ASD
O sistema operacional é o Ubuntu Linux 12.04, edição de 64 bits, a versão do Python é 3.2.3.
Como posso me livrar desse comportamento?
Abaixo está o código que usei:
import sys
import tty
import termios
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
tty.setraw(sys.stdin)
for i in range(0, 10):
print("ASD")
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)