对于标准Python控制台窗口,您可以删除最后一行,例如sys.stdout.write('\r'+' '*len(line))
作为explained here。
但是对于像SciTe,Idle或Eclipse(使用PyDev)这样的编辑器,stdout是一个文件类型的对象,可能会将其内容刷新到控制台窗口,使其缓冲区为空,因此一旦它出现就不允许修改内容在窗口。可以应用什么技巧,例如,擦除这种控制台的最后一行?有没有一种通用的方法,如果脚本在编辑器外部运行,写入标准的Python控制台窗口,会产生相同的结果吗?
编辑:检查类型(os.sys.stdout)显示:
<type 'file'>
<class 'idlelib.rpc.RPCProxy'>
<type 'file'>
<type 'file'>
在标准的python控制台stdout中,结果stdout.write('\r')
与SciTe和Eclipse的控制台不同,因此stdout的type
没有定义它的实现。
编辑:只看到有similar problem的java人并且报告为bug ...
答案 0 :(得分:1)
我得出结论认为这是不可能的,如果我错了,请纠正我。
Python控制台窗口(终端)不会“刷新”写入的行,直到传递下一行,就好像它在内存中保留一个回车,如'\ n',在写入时可以忽略('\ n \ r)。另外,更多基于GUI的控制台窗口(IDE)显然以不同的方式实现。所以也许它可能是一个功能请求来解释'\ r'来删除这些控制台中的前一行,这样所有控制台至少可以共享标准控制台的常见行为,但可能只有其他选项。
同时对我来说一个解决方案,因为用户可以将sys.stdout
更改为新的控制台窗口,即questioned before,但回答不尽如人意......任何人都对此发展了一个下注者的意见?
或使用像curses模块那样的东西,但是用于Windows(对于Windows来说是'curses.py'),例如Console.py。