最近做测试工具,实在懒得搞GUI,然后意识到python自带一个模块叫cmd,用了用发现简直是救星。默认cmd模块中的Cmd类会使用rawinput来处理提示符显示和输入信息获取的工作,但是特定情况下会有个问题:
当交互线程等待用户输入指令的时候,如果希望另外一些后台线程可以打印信息到前台显示的话……
打印当然是打印出来了,但只要开始输入新的指令,这些打印信息就都被清除掉了,只剩下提示符和新的输入。如果想实时看什么东西的话……
反复尝试和阅读cmd模块源码以后发现,Cmd类在实例化的时候,默认会有个use_rawinput属性是为1的,如果重载__init__()的时候把它设置为0,那么会改为通过readline来处理提示符和输入(当然你如果在windows上玩这一手的话,最好先把pyreadline装上,windows上我没弄过gnu readline,不知道有没搞成了的),然后打印信息被擦除的问题就得以解决了。
时间: 2024-10-27 10:02:28