python - 动态打印时,如何删除整行?
问题描述
在python中,要动态打印,标准方法是使用回车。
像这样
sys.stdout.write(f"\r {some_str}")
sys.stdout.flush()
#or
print(f"{some_str}", end="\r", flush=True)
但是,如果我的前一行比当前行长,它就会徘徊。例如,以下代码 -
for i in range(100):
print(f"{10000*(99-i)} text", end='\r', flush=True)
time.sleep(0.03)
以以下作为最终输出结束
0 texttextt
代替
0 text
如何让程序在下一次输入之前完全擦除该行?
解决方案
对此的一般解决方案非常复杂,并且可能涉及使用curses
或一些类似的模块来抽象出大部分系统依赖项。
在您的情况下,最简单的解决方案可能是填充数字(使用...:6d
格式模板中的类似内容),使其始终具有相同的长度。或者,您可以在行尾放置适当数量的空格,以便在它变短时消除后面的任何内容。如果线路太长以至于被包裹,这两种解决方案都会导致问题。
推荐阅读
- python - Ansible:对树结构进行交互
- python - 您如何处理代码中的不同 KeyError
- java - 将碧玉报告导出到excel表单jsp导致“.xls的文件格式和扩展名”不匹配
- javascript - Apollo 服务器设置多个“set-cookie”标头作为响应
- java - 树中所有子节点和节点本身的最大数据总和
- sql - postgres 从 9.5 升级到 11 将连接更改为嵌套循环,使其非常慢
- c# - Excel 2019 VSTO C# 替换不起作用
- python - PyMySQL 连接超时 - 代码结构
- angular - 使用 ngmodel 填充选择下拉列表中的值,角度 8
- css - 在步进进度条下对齐标签