Python output above the last printed line

醉酒当歌 提交于 2020-08-06 08:28:57

问题


Is there a way in python to print something in the command line above the last line printed? Or, similarly to what I want to achieve, remain the last line intact, that is, not overwrite it.

The goal of this is to let the last line in the command line a status/precentage bar.

Output example:

File 1 processed
(0.1% Completed)

Next refresh:

File 1 processed
File 2 processed
(0.2% Completed)

Next refresh:

File 1 processed
File 2 processed
File 3 processed
(0.3% Completed)

回答1:


from time import sleep
erase = '\x1b[1A\x1b[2K'

def download(number):
    print(erase + "File {} processed".format(number))

def completed(percent):
    print("({:1.1}% Completed)".format(percent))

for i in range(1,4):
    download(i)
    completed(i/10)
    sleep(1)

Works in my python 3.4, final output is:

File 1 processed
File 2 processed
File 3 processed
(0.3% Completed)

If you want read more about terminal escape codes try: https://en.wikipedia.org/wiki/ANSI_escape_code

As requested, example with a space:

from time import sleep
erase = '\x1b[1A\x1b[2K'

def download(number):
    print(erase*2 + "File {} processed".format(number))

def completed(percent):
    print("\n({:1.1}% Completed)".format(percent))

print("\n(0.0% Completed)")
for i in range(1,5):
    download(i)
    completed(i/10)
    sleep(1)

The final output is:

File 1 processed
File 2 processed
File 3 processed
File 4 processed

(0.4% Completed)



回答2:


Take a look at the \r command. This could do the trick.

for i in range(2):
    print '\rFile %s processed' % i
    print '(0.%s%% Completed)' % i,

Output is:

File 0 processed
File 1 processed
(0.1% Completed)


来源:https://stackoverflow.com/questions/43373707/python-output-above-the-last-printed-line

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!