首页 > 解决方案 > 在同一命令行中删除和替换打印的单词

问题描述

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

这是我的功能:

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)

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

标签: pythonstringformat

解决方案


我之前(现已删除)的评论不正确,输出退格不会删除字符。相反,您需要用空格覆盖该行以摆脱它们:

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()

推荐阅读