Python에서 같은 줄에 여러 개의 인쇄물
스크립트를 실행하고 싶은데 기본적으로 다음과 같은 출력이 표시됩니다.
Installing XXX... [DONE]
를 하고 있습니다.Installing XXX...
인쇄를 나서, 「저인 first first서서 first first first」를 인쇄합니다.[DONE]
.
다만, 지금 인쇄하고 싶다.Installing xxx...
★★★★★★★★★★★★★★★★★」[DONE]
같은 선상에
좋은 생각 있어요?
Python 3 솔루션
print()
end
는 " " " 입니다.\n
(일부러)빈 문자열로 설정하면, 행의 마지막에 새로운 행이 발행되지 않게 됩니다.
def install_xxx():
print("Installing XXX... ", end="", flush=True)
install_xxx()
print("[DONE]")
Python 2 솔루션
'마음표' print()
이 방해하다print()
(출력 말미에 여분의 공간이 있는 것을 주의해 주세요).
def install_xxx():
print "Installing XXX... ",
install_xxx()
print "[DONE]"
다음과 같이 간단하게 사용할 수 있습니다.
print 'something',
...
print ' else',
그리고 출력은
something else
하게 죽일 import sys
하십시오. 끝에는 쉼표 기호에 주의하십시오.
3 + 3+3+ print("some string", end="");
마지막 줄 삽입을 제거합니다. 것은 이쪽을 봐 주세요.help(print);
콘솔 출력에서 이전 위치로 돌아가려면 백스페이스 '\r' 또는 '\x08' 문자를 사용해야 합니다.
Python 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
Python 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%
이 경우 플러시에 대한 추가 정보는 다음과 같습니다.'end=' 인수가 포함된 python print 문이 while-display에서 다르게 동작하는 이유는 무엇입니까?
sys.stdout.write('Installing XXX... ')
★★★★★★★★★★★★★★★★★」sys.stdout.write('Done')
새 합니다."\n"
인쇄 기능을 재생성하려면 , 를 클릭합니다.이것만 가지고 욕을 할 필요는 없을 것 같아요.
가장 심플:
파이썬 3
print('\r' + 'something to be override', end='')
즉, 커서가 인쇄되어 같은 행으로 끝나는 경우보다, 선두로 되돌아가게 됩니다.루프내의 경우는, 기동한 장소와 같은 장소에서 인쇄가 개시된 장소와 같은 장소에서 인쇄가 개시됩니다.
새로운 회선이 나올 때까지 모두 일시 정지했기 때문에, 어느 대답도 통하지 않았습니다.간단한 도우미를 썼습니다.
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」는, sleep 하기 전에, 우선 인쇄해, 화면에 플러시 합니다.그 후에는 표준 인쇄를 사용할 수 있습니다.
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
Python은 인쇄의 종료로서 newline을 추가합니다.python3의 경우 줄 바꿈 대신 공백을 추가하려면 end='를 사용합니다.python2의 경우 print 문 끝에 쉼표를 사용합니다.
print('Foo', end=' ')
print('Bar')
이 간단한 예에서는 같은 행에 1-10을 인쇄합니다.
for i in range(1,11):
print (i, end=" ")
인 '인쇄'가 .end
쟁,,, 그은결결결결결 것것것것것것행이지만 할 수 "Newline").print("hello world!", end="")
하는 것이 (앞줄을 추가하는 것이 아니라) 조합하면 .\r
print(),
인쇄문 끝에 있습니다.를 들어 '예'라고 하면,
from time import sleep
for i in xrange(0, 10):
print("\r{0}".format(i)),
sleep(.5)
print("...DONE!")
는 0 ~ 9를 카운트하여 콘솔의 오래된 번호를 바꿉니다."...DONE!"
9월 9일
OP의 경우 콘솔은 설치 완료율을 "프로그레스 바"로 표시할 수 있습니다.여기서 시작과 끝의 문자 위치를 정의하고 그 사이에 마커를 갱신할 수 있습니다.
print("Installing |XXXXXX | 30%"),
@Vadim-Zin4uk의 3.0 버전에서 파생된 2.7 호환 버전은 다음과 같습니다.
파이썬 2
import time
for i in range(101): # for 0 to 100
s = str(i) + '%' # string for output
print '{0}\r'.format(s), # just print and flush
time.sleep(0.2)
그런 점에서 제공된 3.0 솔루션은 약간 부풀어 있는 것처럼 보입니다.예를 들어 백스페이스 메서드는 integer 인수를 사용하지 않기 때문에 완전히 폐기될 수 있습니다.
파이썬 3
import time
for i in range(101): # for 0 to 100
s = str(i) + '%' # string for output
print('{0}\r'.format(s), end='') # just print and flush
time.sleep(0.2) # sleep for 200ms
둘 다 테스트 완료되어 동작합니다.
이것은 매우 오래된 스레드입니다만, 여기 매우 상세한 회답과 샘플 코드가 있습니다.
\r
는 ASCII 문자 세트의 캐리지 리턴 문자열 표현입니다.8진수랑 똑같아요.015
chr(0o15)
]'16'0d
chr(0x0d)
decimal ]'10'13
chr(13)
] 를 참조해 주세요.man ascii
지루한 독서로요.그것(\r
는, 이 좋은 쉬운 표현입니다.) , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , .이것은 매우 단순하게 타이프라이터의 캐리지를 종이를 앞으로 이동시키지 않고 처음부터 다시 이동시키는 것을 의미합니다.★★★★★★★★★★★★★★★★★★입니다CR
의 CRLF
즉, 캐리지 리턴과 라인 피드를 의미합니다.
print()
파이썬 3번 2에서는 Python 2(사용하고 싶은 버전)입니다.print
는, 「Import」, 「Import」로부터 그 하는 으로, 할 수 있습니다.__future__
★★★★★★의 print
인쇄 할 수 기본 인 " Behavior"를 .\n
print()
discl.discl.discl을 클릭합니다.
sys.stdout.flush
Python에게 표준 출력의 출력을 플러시하도록 지시합니다.이곳에서는, 출력을 송신합니다.print()
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★, 같은 을 할 수 있습니다.python -u
환경변수 설정 " " " "PYTHONUNBUFFERED=1
이 말은 할 수 있습니다.import sys
★★★★★★★★★★★★★★★★★」sys.stdout.flush()
호출을 통해 얻을 수 있는 양은 거의 0이며 응용 프로그램이 올바르게 동작하기 전에 이 단계를 수행해야 한다는 것을 쉽게 잊어버린 경우 디버깅하기가 매우 어렵습니다.
그리고 샘플.이것은 Python 2 또는 3에서 완벽하게 실행됩니다.
from __future__ import print_function
import sys
import time
ANS = 42
FACTORS = {n for n in range(1, ANS + 1) if ANS % n == 0}
for i in range(1, ANS + 1):
if i in FACTORS:
print('\r{0:d}'.format(i), end='')
sys.stdout.flush()
time.sleep(ANS / 100.0)
else:
print()
이 Python 3.X의 솔루션은 다음과 같습니다.
제가 이걸 해야 할 때는 보통 이렇게 해서
end=' '
예를 들어 다음과 같습니다.
# end='' ends the output with a <space>
print("Welcome to" , end = ' ')
print("stackoverflow", end = ' ')
출력은 다음과 같습니다.
Welcome to stackoverflow
의 ★★end=
는 임의의 문자로 대체할 수 있습니다.를 들어 '예'라고 하면,
print("Welcome to" , end = '...')
print("stackoverflow", end = '!')
출력:
Welcome to...stackoverflow!
print()
로 「end」로 가."\n"
" "print("This is America")
전화하고 print("This is America", end = "\n")
할 수 있는 하는 것입니다.print("This is America", end ="")
값을 배열에 미리 저장한 경우 다음 형식으로 호출할 수 있습니다.
for i in range(0,n):
print arr[i],
이 Quora 투고를 발견했는데, 이 예시는 나에게 도움이 되었습니다(피톤 3). 이것은 내가 필요로 하는 것에 가까웠습니다(즉, 앞의 행을 모두 지웁니다).
예를 들어 다음과 같습니다.
def clock():
while True:
print(datetime.now().strftime("%H:%M:%S"), end="\r")
는, 다른 한 대로, 「Da Knowledge Knowledge」를 합니다.end=""
이 솔루션을 찾았는데 Python 2.7에서 작동합니다.
# Working on Python 2.7 Linux
import time
import sys
def backspace(n):
print('\r', end='') # use '\r' to go back
for i in range(101): # for 0 to 100
s = str(i) + '%' # string for output
sys.stdout.write(string)
backspace(len(s)) # back for n chars
sys.stdout.flush()
time.sleep(0.2) # sleep for 200ms
언급URL : https://stackoverflow.com/questions/5598181/multiple-prints-on-the-same-line-in-python
'source' 카테고리의 다른 글
Composer 자동 로드 사용 (0) | 2022.12.05 |
---|---|
객체 속성에 직접 할당된 호출 종료 (0) | 2022.12.05 |
JavaScript에는 스트링빌더 클래스가 내장되어 있습니까? (0) | 2022.12.05 |
요소가 jQuery에 숨겨져 있는지 확인하려면 어떻게 해야 합니까? (0) | 2022.12.05 |
PHP를 사용하여 여러 MariaDB 쿼리를 실행할 수 없습니다. (0) | 2022.12.05 |