python - Bash 或 Python,当向终端打印字符时,如何在 FIXED 位置更改字符?

标签 python bash

我在这里想知道的东西应该是真正的'基本',但这是一个长期困扰我的问题,不知道诀窍在哪里。

假设在一个耗时的程序(bashPython)中,我必须在它运行时打印出进度的百分比,基本上我想要打印 1%,一段时间后,我打印 2%,等等。我希望 '2%' 被准确显示在显示 '1%' 的相同位置,而不是像“1% 2%”之类的。你知道wget,我要的正是wget所做的,显示下载进度。我是否需要清除先前打印的字符,但是如何?

它基本上是如何工作的...

谢谢,

最佳答案

我将用 Python 回答,因为它更容易。

您可以向终端打印退格键将光标向左移动,然后写入另一个字符覆盖当前位置。您也可以使用回车键转到行首。

import time
import sys
for x in range(101):
    sys.stdout.write('\r%d%%' % x)
    sys.stdout.flush()
    time.sleep(0.2)
sys.stdout.write('\n')

使用回车并重写整行是最简单的,因为您不必注意要打印多少个退格键。

请注意,如果新线比旧线短,旧线仍会显示出来。

import sys
sys.stdout.write('this is a very long line')
sys.stdout.write('\rshort line')
sys.stdout.write('\n')

输出:

short linevery long line

典型的解决方案是在长行上写空格。

关于python - Bash 或 Python,当向终端打印字符时,如何在 FIXED 位置更改字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11149978/

相关文章:

python - 基于不同的 DataFrame 在 pandas DataFrame 中追加列

python - 使用 lambda 和 defaultdict

php - cron 运行使用 shell_exec 和 redis-cli 的 php 文件

linux - tr 改变文件编码?

python - 如何在 Python 中读取简单的 Json 结果(来自 Google 计算器)?

python - 从mysql dob字段值计算python中的年龄

regex - 在 Bash 中使用正则表达式检查电子邮件地址的正确性

linux - Linux 守护进程中的高效文件检查

bash - 函数范围内源文件的缺陷

python - 无效参数错误 : cannot compute MatMul as input #0(zero-based) was expected to be a float tensor but is a double tensor [Op:MatMul]