当我从一个需要终端处于“raw”模式的程序中写入tty时,我得到了很少的文档记录,也很少出现在web“BlockingIOError”中
在Unix(Linux,Mac)中,将终端切换到raw是获取要显示的行的方法
不打印换行符,更重要的是,阅读任何键入的内容
无需等待<enter>
键
检查https://stackoverflow.com/a/6599441/108205以获得在Python中执行此操作的可靠方法
然而,当将数据打印到原始终端时,我会在随机时间让我的程序以BlockingIOError
异常终止
(我甚至构建了一个重试机制来解决这个问题,但有时根本无法解决)
github上的一些问题中出现了异常,没有关于如何修复它的断言。 用我的项目触发它的方法是:
import terminedia as TM
with TM.keyboard: # enables the use of TM.inkey() for realtime keyboard reading
print("*" * 100_000)
(您可以pip install terminedia
尝试)
这段代码创建了一个上下文管理器,它可以立即将tty切换回“正常”阻塞模式,包装具有大量输出的部件,从而解决了我的问题:
为完整起见,问题中的代码片段将通过以下方式修复:
(尽管在使用terminedia时,应该使用“Screen”类,而不是已经包装好的
TM.print
)相关问题 更多 >
编程相关推荐