Python 实时更新命令提示文本

Python 实时更新命令提示文本,python,Python,有办法做到这一点吗 例: 我有一个口述 sounds = { 'sound1.mp3': 0, 'sound2.mp3': 0, 'sound3.mp3': 0 } 更新按键值(此ex中的sound1)时,命令提示将从 sound1.mp3: 0 sound2.mp3: 0 sound3.mp3: 0 to sound1.mp3: 1 sound2.mp3: 0 sound3.mp3: 0 这是一个关于我所说内容的简单演示: cla

有办法做到这一点吗

例:

我有一个口述

sounds = {
        'sound1.mp3': 0,
        'sound2.mp3': 0,
        'sound3.mp3': 0
    }
更新按键值(此ex中的sound1)时,命令提示将从

sound1.mp3: 0
sound2.mp3: 0
sound3.mp3: 0

to

sound1.mp3: 1
sound2.mp3: 0
sound3.mp3: 0

这是一个关于我所说内容的简单演示:

class Holder(object):
    def __init__(self, init_dict):
        self.dict = init_dict

    def increase(self, key):
        if key in self.dict:
            d = {key: self.dict[key] + 1}
            self.update(d)

    def update(self, d):
        self.dict.update(d)
        self.print_prompt()

    def print_prompt(self):
        for key in sorted(self.dict.keys()):
            print '%s: %d' % (key, self.dict[key])
        print


def main():
    sounds = {
        'sound1.mp3': 0,
        'sound2.mp3': 0,
        'sound3.mp3': 0
    }

    holder = Holder(sounds)
    holder.print_prompt()
    holder.increase('sound1.mp3')

    holder.update({
        'sound1.mp3': 3,
        'sound2.mp3': 2,
        'sound3.mp3': 1
    })


if __name__ == '__main__':
    main()
输出为:

sound1.mp3: 0
sound2.mp3: 0
sound3.mp3: 0

sound1.mp3: 1
sound2.mp3: 0
sound3.mp3: 0

sound1.mp3: 3
sound2.mp3: 2
sound3.mp3: 1

如果在终端上工作,可以使用
\r
字符(回车符)将输出返回到行首

例如,我们可以

for i in range(10):
    time.sleep(1)
    print(i, end="\r")
请注意,提示符(在空闲状态下)将用
>
覆盖上一次迭代。这是因为在命令提示符下,它会将下一个字符指针移动到行首

如果要避免这种情况,只需在之后打印一个空行即可


据我所知,重新打印前几行的唯一方法是清除屏幕。有关如何清除整个屏幕的信息,请参见或。

打印出词典中的项目。完成后,如何显示命令提示?请显示一些代码。@DDGG我希望它在同一行上更新,而不是不断打印…这就是我的要求。它不能在打印它的同一行上更新。您应该分别进行更新和打印。可能我知道您想要什么,您可能需要使用一个类来保存此词典,并创建一个更新方法,在该方法中,您首先进行更新,然后进行打印。@DDGG ya我的意思不是更新和打印在同一行上。像我有一个函数来更新它,然后打印更新的dict。但是idk如何让它替换第一次打印