在python中的STDOUT中清除当前行

时间:2018-07-28 02:46:04

标签: python bash operating-system

所以我用python编写了一个程序,反复要求用户输入。不久之后,以前的命令就会开始建立。

> Ping
Pong!
> Hello
Hey there!
>say whats up?
Whats up?

我编造命令只是为了显示示例

我想添加一个动画,该动画在单词的末尾添加一个...,例如

i choose.

然后清除该行

i choose..

然后清除该行

i choose...

,依此类推,但我需要清除屏幕才能使其正常运行,并且我希望用户命令的历史记录以及对窗台的响应都在那里。有没有办法使用python或导入os只删除一行而不是整个屏幕?谢谢!

2 个答案:

答案 0 :(得分:1)

您正在寻找回车符\r。当您打印该字符时,上一行将被清除。例如:

import time
print('I choose',end='',flush=True)
time.sleep(1)
print('\rI choose.',end='',flush=True)
time.sleep(1)
print('\rI choose..',end='',flush=True)
time.sleep(1)
print('\rI choose...',end='',flush=True)

这实际上是人们在命令行中制作进度条的方式。

答案 1 :(得分:1)

您应该能够使用常规的“打印”来执行此操作,只需在打印语句的末尾添加逗号即可。

from time import sleep

print ‘I choose.’,  
sleep(0.5)
print ‘.’,  
sleep(0.5)
print ‘.’ 

编辑:在睡眠中添加了动画,以使动画按预期工作。