Skip to main content
 首页 » 编程设计

python之尝试在 python 中进行无缓冲读取时出现奇怪的换行符

2025年05月04日15lovecherry

我有这个代码:

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 上运行这发生在我身上。

请您参考如下方法:

这可能是特定于平台的问题。您是否在不同的基于 POSIX 的操作系统(例如 Linux、BSD、Darwin 等)上尝试过代码?你的结果一样吗?它们处理终端操作的方式都略有不同,因此您可能需要考虑的不仅仅是 posix 与 nt,还需要更深入一些。