通过刷新标准输出从终端清除最后转储的文本

clearing last dumped text from terminal by flushing stdout

嗨,我有点忘了过去,我记得已经完成了清除终端中最后打印的文本的工作,但我现在的工作方式似乎不起作用

def main():

    print 'starting...'

    baseURL = 'https://api.thingspeak.com/update?api_key=%s' % myAPI
    print baseURL

    while True:
        try:
            RHW, TW, TWF = getSensorData()
            # LT = RCtime(RCpin)
            f = urllib2.urlopen(baseURL + 
                                "&field1=%s&field2=%s&field3=%s" % (TW, TWF, RHW))

            sys.stdout.flush()
            sys.stdout.write("Celcius: %s , Farenheit: %s , Humidity: %s "% (TW, TWF, RHW))
            f.close()


            sleep(int(myDelay))
        except:
            print 'exiting.'
            break

任何人都可以通过一些光线吗?

如果你真的想清除屏幕你应该使用 curses 或 ncurses

但是有些技巧是

  • \b 退格字符...允许您覆盖最后一个字符

  • \r carriage return without newline ...这会将光标移动到大多数终端中当前行的开头(允许您 "overwrite"当前行) ...

  • 还有一些疯狂的十六进制转义码,它们非常特定于终端

os.system('cls')os.system('clear') 将根据您的操作系统进行排序

如果你只想flush当前的stdout那就是sys.stdout.flush()