Remove and Replace Printed items [duplicate]

和自甴很熟 提交于 2019-11-26 03:37:14

问题


This question already has an answer here:

  • Print in one line dynamically 17 answers

I was wondering if it was possible to remove items you have printed in Python - not from the Python GUI, but from the command prompt. e.g.

a = 0  
for x in range (0,3):  
    a = a + 1  
    b = (\"Loading\" + \".\" * a)
print (a)

so it prints

>>>Loading   
>>>Loading. 
>>>Loading.. 
>>>Loading...

But, my problem is I want this all on one line, and for it it remove it self when something else comes along. So instead of printing \"Loading\", \"Loading.\", \"Loading... I want it to print \"Loading.\", then it removes what is on the line and replaces it with \"Loading..\" and then removes \"Loading..\" and replaces it (on the same line) with \"Loading...\". It\'s kind of hard to describe.

p.s I have tried to use the Backspace character but it doesn\'t seem to work (\"\\b\")

Thanks


回答1:


Just use CR to go to beginning of the line.

import time
for x in range (0,5):  
    b = "Loading" + "." * x
    print (b, end="\r")
    time.sleep(1)



回答2:


One way is to use ANSI escape sequences:

import sys
import time
for i in range(10):
    print("Loading" + "." * i)
    sys.stdout.write("\033[F") # Cursor up one line
    time.sleep(1)

Also sometimes useful (for example if you print something shorter than before):

sys.stdout.write("\033[K") # Clear to the end of line



回答3:


import sys
import time

a = 0  
for x in range (0,3):  
    a = a + 1  
    b = ("Loading" + "." * a)
    # \r prints a carriage return first, so `b` is printed on top of the previous line.
    sys.stdout.write('\r'+b)
    time.sleep(0.5)
print (a)

Note that you might have to run sys.stdout.flush() right after sys.stdout.write('\r'+b) depending on which console you are doing the printing to have the results printed when requested without any buffering.



来源:https://stackoverflow.com/questions/5290994/remove-and-replace-printed-items

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