我有这段代码:
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上运行这件事发生在我身上。
答案 0 :(得分:1)
这可能是特定于平台的问题。您是否尝试过基于不同POSIX的操作系统(例如Linux,BSD,Darwin等)的代码。你的结果是一样的吗?他们对终端操作的处理方式略有不同,因此您可能需要考虑的不仅仅是posix
与nt
的比较,而且要更深入。