【发布时间】:2012-08-27 05:49:17
【问题描述】:
我需要在 Python 中将标准输入切换到非缓冲模式,这样我就可以从中读取单个字符。我设法让它工作,但现在标准输出被破坏了:不知何故,似乎在换行符之后,发出了一些空格字符,第一行为零,第二行为 3,第三行为 6,等等,像这样:
ASD
ASD
ASD
操作系统为Ubuntu Linux 12.04,64位版本,Python版本为3.2.3。
我怎样才能摆脱这种行为?
下面是我用过的代码:
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)
【问题讨论】:
-
看起来您切换了
fd和sys.stdin参数。termios.tcgetattr接受fileno属性和tty.setraw等待文件描述符的东西(至少在 python3.9 中)。你用的是什么版本?
标签: python linux stdin buffering