删除并替换同一命令行中打印的单词



我想写一个函数,其中用户给出文件名并设置一个"速度";以所需速度显示单词的参数。然后,该函数开始在文件中逐字打印,但替换同一命令行上的前一个。

这是我的功能:

def quick_reader(a):
fhandle = open(a)
document = fhandle
for line in document:
words = line.split()
for i in range(0,len(words)):
print("> " + words[i], end="r")
time.sleep(1)

问题是,到了第三个单词时,它开始在一些单词中添加额外的字母,并将其搞砸。它确实在同一行打印,并替换前一个单词,只是把单词弄乱了。

它会出错,因为您需要"擦除";来自先前CCD_ 1的过冲字符。

一种方法是存储前一行的长度,然后在下一次迭代中打印尽可能多的空格,然后再打印下一行。

def quick_reader(a, prefix="> ", delay=1):
lgth = 0
pref_length = len(prefix)
with open(a) as fhandle:
document = fhandle
line = fhandle.readline()
while line:
# Strip() after the while check,
# so it doesn't exit the loop with an empty line.
line = line.strip()
# Erasing the line
print(" " * lgth , end="r")
# Printing the new line
print(prefix + line, end="r")
# Storing the current line's length
lgth  = len(line) + pref_length
time.sleep(delay)
line = fhandle.readline()

我以前(现已删除(的注释不正确,输出退格不会擦除字符。相反,你需要用空格覆盖行以消除它们:

import time
def quick_reader(filepath, delay=1):
with open(filepath) as file:
for line in file:
for word in line.split():
print('>', word, end='', flush=True)
time.sleep(delay)
print('r ', ' ' * len(word),  end='r', flush=True)
print()

最新更新