У меня есть этот код:
def getch(self):
if os.name == 'posix':
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(fd)
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
elif os.name == 'nt':
ch = msvcrt.getch()
return ch
Это прекрасно работает на python 2.6 и 2.7, но всякий раз, когда я пытаюсь протестировать его на python 3.0 и выше, при вызове stdin.read выводится новая строка, я думаю, что это возможно, потому что python 3 меняется на sys. stdin, stdout и stderr, но я не уверен, как это исправить
РЕДАКТИРОВАТЬ: работает на OS X 10.6.4 python 3.1 и Ubuntu 9.04 python 2.6 это произошло для меня.