【问题标题】:Clear current line in STDOUT in python在python中清除STDOUT中的当前行
【发布时间】:2019-01-05 03:32:17
【问题描述】:
所以我在 python 中编写了一个程序,重复要求用户输入。过了一会儿,前面的命令开始堆积起来,就这样。
> Ping
Pong!
> Hello
Hey there!
>say whats up?
Whats up?
我编写命令只是为了展示示例
我想添加一个在单词末尾添加...的动画,例如
i choose.
然后清线然后
i choose..
然后清线然后
i choose...
等等,但我需要清除屏幕才能使其正常工作,并且我希望用户命令和响应的历史记录仍然存在。有没有办法使用 python 或导入 os 只删除一行而不是整个屏幕?谢谢!
【问题讨论】:
标签:
python
bash
operating-system
【解决方案1】:
您应该能够使用普通的“打印”来执行此操作,只需在打印语句的末尾附加一个逗号:
from time import sleep
print ‘I choose.’,
sleep(0.5)
print ‘.’,
sleep(0.5)
print ‘.’
编辑:在睡眠中添加以使动画更符合预期。
【解决方案2】:
您正在寻找回车符\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)
这实际上是人们在命令行中制作进度条的方式。