기본적으로 다음과 같은 출력을 보여주는 스크립트를 실행하고 싶습니다.
Installing XXX... [DONE]
현재 Installing XXX...
먼저 인쇄 한 다음 인쇄 [DONE]
합니다.
그러나 이제는 같은 줄에 인쇄 Installing xxx...
하고 싶습니다 [DONE]
.
어떤 아이디어?
답변
print
명령문을 사용하여 가져 오기없이이를 수행 할 수 있습니다 sys
.
def install_xxx():
print "Installing XXX... ",
install_xxx()
print "[DONE]"
print
줄 끝에있는 쉼표는 줄을 print
새로 만들지 못하도록 합니다 (출력 끝에 여분의 공간이있을 것입니다).
Python 3 솔루션
위의 내용은 Python 3에서 작동하지 않기 때문에 대신 (가져 오기없이 sys
) 이를 수행 할 수 있습니다 .
def install_xxx():
print("Installing XXX... ", end="", flush=True)
install_xxx()
print("[DONE]")
인쇄 기능은 end
기본값 인을 사용 "\n"
합니다. 빈 문자열로 설정하면 줄 끝에서 새 줄을 발행 할 수 없습니다.
답변
간단히 이것을 사용할 수 있습니다 :
print 'something',
...
print ' else',
출력은
something else
에 의해 과잉 살필 필요가 없습니다 import sys
. 끝에 쉼표 기호에주의하십시오.
print("some string", end="");
마지막에 줄 바꿈 삽입을 제거하는 Python 3 이상 . 더 읽어보기help(print);
답변
콘솔 출력에서 이전 위치로 돌아가 려면 백 스페이스 ‘ \ r ‘또는 ( ‘ \ x08 ‘) char을 사용해야 합니다.
파이썬 2 이상 :
import time
import sys
def backspace(n):
sys.stdout.write((b'\x08' * n).decode()) # use \x08 char to go back
for i in range(101): # for 0 to 100
s = str(i) + '%' # string for output
sys.stdout.write(s) # just print
sys.stdout.flush() # needed for flush when using \x08
backspace(len(s)) # back n chars
time.sleep(0.2) # sleep for 200ms
파이썬 3 :
import time
def backline():
print('\r', end='') # use '\r' to go back
for i in range(101): # for 0 to 100
s = str(i) + '%' # string for output
print(s, end='') # just print and flush
backline() # back to the beginning of line
time.sleep(0.2) # sleep for 200ms
이 코드는 한 줄에 0 %에서 100 %까지 계산됩니다. 최종 가치는 다음과 같습니다.
> python test.py
100%
이 경우 flush에 대한 추가 정보는 다음과 같습니다. 왜 ‘end =’인수를 포함하는 python print 문이 while 루프에서 다르게 동작합니까?
답변
sys.stdout.write('Installing XXX... ')
및을 사용하십시오 sys.stdout.write('Done')
. 이런 식으로 "\n"
인쇄 기능을 다시 만들려면 새 줄을 직접 추가해야 합니다. 나는 이것을 위해 저주를 사용할 필요가 없다고 생각합니다.
답변
새로운 라인이 나올 때까지 모두 일시 중지 되었기 때문에 답이 없습니다. 간단한 도우미를 작성했습니다.
def print_no_newline(string):
import sys
sys.stdout.write(string)
sys.stdout.flush()
그것을 테스트하려면 :
import time
print_no_newline('hello ')
# Simulate a long task
time.sleep(2)
print('world')
“hello”는 먼저 잠자기 전에 인쇄하고 화면을 플러시합니다. 그런 다음 표준 인쇄를 사용할 수 있습니다.
답변
sys.stdout.write
반송하지 않고 인쇄합니다
import sys
sys.stdout.write("installing xxx")
sys.stdout.write(".")
http://en.wikibooks.org/wiki/Python_Programming/Input_and_output#printing_without_commas_or_newlines
답변
가장 간단한 :
파이썬 3
print('\r' + 'something to be override', end='')
그것은 무언가를 인쇄하고 같은 줄에서 끝나는 것보다 커서를 처음으로 되돌릴 것임을 의미합니다. 루프 상태이면 시작과 같은 장소에서 인쇄를 시작합니다.