your programing

인쇄 된 항목 제거 및 교체

lovepro 2020. 10. 6. 18:50
반응형

인쇄 된 항목 제거 및 교체 [중복]


이 질문에 이미 답변이 있습니다.

Python GUI가 아니라 명령 프롬프트에서 Python으로 인쇄 한 항목을 제거 할 수 있는지 궁금합니다. 예 :

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

그래서 그것은 인쇄

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

그러나 내 문제는이 모든 것을 한 줄로 원하고 다른 일이 발생하면 스스로 제거한다는 것입니다. 그래서 인쇄하는 대신에 인쇄 "Loading", "Loading.", "Loading...하고 싶습니다 "Loading.". 그런 다음 줄에있는 것을 제거 "Loading.."하고로 바꾼 다음 제거 "Loading.."하고 (같은 줄에서) "Loading...". 설명하기 어렵습니다.

추신 백 스페이스 문자를 사용하려고했지만 작동하지 않는 것 같습니다 ( "\b")

감사


CR을 사용하여 줄의 시작으로 이동하십시오.

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

한 가지 방법은 ANSI 이스케이프 시퀀스 를 사용하는 것입니다 .

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

또한 때때로 유용합니다 (예 : 이전보다 짧은 것을 인쇄하는 경우).

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

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)

버퍼링없이 요청시 결과를 인쇄하려면 인쇄를 수행중인 콘솔에 따라 sys.stdout.flush()바로 실행해야 할 수도 있습니다 sys.stdout.write('\r'+b).

참고 URL : https://stackoverflow.com/questions/5290994/remove-and-replace-printed-items

반응형