python-3.x - 如何在 Python 中的多个终端行上重写
问题描述
我正在尝试从 Python3 脚本在我的终端上重写两行。
让我们举一个简单的例子:
import time
for n in range(1, 10):
print(n)
print(n*2)
time.sleep(1)
当我启动我的脚本时,我想要这个输出:
bla@bla:/tmp$ python3 test.py
1
2
然后一秒钟后(在睡眠之后)我希望这两个数字被“替换为新输出”,如下所示:
bla@bla:/tmp$ python3 test.py
2
4
等等...
我测试了什么?
- 我试图
os.system("clear")
在我的 for 循环的开头放置,但它非常丑陋而且它没有做我想要的...... - 我已尝试按照此处
end '\r'
的建议将其放在打印的末尾 - 我尝试使用此命令启动此命令,
os.system()
但没有成功
你有什么解决办法 ?谢谢你的帮助。
解决方案
这取决于您使用的终端仿真器,但您可能希望输出 ANSI 'cursor up' 代码,这会将光标向上移动以准备下一次迭代。你想要的代码是“ESCAPE [A”
import time
for n in range(1, 10):
print(n)
print(n*2)
time.sleep(1)
print("\033[A\033[A", end="")
ESCAPE 是字符 27,即八进制的 033。注意 end="" 以停止光标再次向下移动...
推荐阅读
- mysql - 如何统计每种注册类型的所有参与者?
- c# - 获取异常详情
- python-3.x - PyGame 颜色调整仅适用于三个滑块之一
- git - Git:将远程分支合并到远程主控?
- python - 根据熊猫列中的逻辑测试从DataFrame中选择行
- arrays - 在 Fortran 中将矩阵分离为子矩阵
- php - 如何在执行函数之前等待 Swift 中的变量?(迅速)
- google-apps-script - 使用 Google Apps 脚本插入 YouTube 顶级评论
- java - 使用 java8 改进将对象列表转换为其他对象
- amazon-web-services - 我应该使用哪种 AWS 服务来处理大型文本文件?