문제

이 질문은 제목이 있습니다.

내가 하고 싶은 그것에 .내가 무엇을 하고 싶은 이 예제에서 :

에서 C:

#include <stdio.h>

int main() {
    int i;
    for (i=0; i<10; i++) printf(".");
    return 0;
}

출력:

..........

Python:

>>> for i in xrange(0,10): print '.'
.
.
.
.
.
.
.
.
.
.
>>> for i in xrange(0,10): print '.',
. . . . . . . . . .

파이썬 print 니다 추가 \n 는 공간을 피할 수 있는 방법는?지금,그것은 단지 예입니다.Don't tell me I 할 수 있는 첫 번째 빌드 문자열은 다음을 인쇄 할 수 있습니다.나는 알고 싶어하는 방법"append"문자열 stdout.

도움이 되었습니까?

해결책

일반적인 방법

import sys
sys.stdout.write('.')

전화해야 할 수도 있습니다

sys.stdout.flush()

보장합니다 stdout 즉시 플러시됩니다.

파이썬 2.6+

Python 2.6에서 가져올 수 있습니다 print Python 3의 기능 :

from __future__ import print_function

이를 통해 아래 Python 3 솔루션을 사용할 수 있습니다.

파이썬 3

Python 3에서 print 진술은 함수로 변경되었습니다. Python 3에서는 대신 할 수 있습니다.

print('.', end='')

이것은 Python 2에서도 작동합니다. from __future__ import print_function.

버퍼링에 문제가있는 경우 추가로 출력을 플러시 할 수 있습니다. flush=True 키워드 인수 :

print('.', end='', flush=True)

그러나 그 점에 유의하십시오 flush 키워드는 버전에서 사용할 수 없습니다 print 기능에서 가져온 기능 __future__ 파이썬 2에서; Python 3,보다 구체적으로 3.3 세 이상에서만 작동합니다. 이전 버전에서는 여전히 호출로 수동으로 플러시해야합니다. sys.stdout.flush().

출처

  1. https://docs.python.org/2/library/functions.html#print
  2. https://docs.python.org/2/library/__future__.html
  3. https://docs.python.org/3/library/functions.html#print

다른 팁

Guido van Rossum 의이 링크에서 설명한 것처럼 간단해야합니다.

Re : AC/R없이 하나의 인쇄는 어떻습니까?

http://legacy.python.org/search/hypermail/python-1992/0115.html

무언가를 인쇄 할 수는 있지만 자동으로 캐리지 리턴이 추가되지는 않습니까?

예, 마지막 인쇄 후 인쇄 후 쉼표를 추가하십시오. 예를 들어,이 루프는 공백으로 분리 된 선에서 숫자 0..9를 인쇄합니다. 최종 Newline을 추가하는 매개 변수가없는 "인쇄"에 유의하십시오.

>>> for i in range(10):
...     print i,
... else:
...     print
...
0 1 2 3 4 5 6 7 8 9
>>> 

참고 :이 질문의 제목은 "Python에서 인쇄하는 방법"과 같은 것입니다.

사람들이 제목을 기반으로 여기에 올 수 있기 때문에 Python은 Printf 스타일 대체를 지원합니다.

>>> strings = [ "one", "two", "three" ]
>>>
>>> for i in xrange(3):
...     print "Item %d: %s" % (i, strings[i])
...
Item 0: one
Item 1: two
Item 2: three

그리고 문자열 값을 직접 곱할 수 있습니다.

>>> print "." * 10
..........

Python2.6+에는 Python3 스타일 인쇄 기능을 사용하십시오 (또한 기존의 키워드 인쇄문도 같은 파일로 나눕니다.)

# for python2 to use the print() function, removing the print keyword
from __future__ import print_function
for x in xrange(10):
    print('.', end='')

모든 python2 인쇄 키워드를 망치지 않으려면 별도의 printf.py 파일

# printf.py

from __future__ import print_function

def printf(str, *args):
    print(str % args, end='')

그런 다음 파일에 사용하십시오

from printf import printf
for x in xrange(10):
    printf('.')
print 'done'
#..........done

printf 스타일을 보여주는 더 많은 예

printf('hello %s', 'world')
printf('%i %f', 10, 3.14)
#hello world10 3.140000

같은 줄에 인쇄하는 방법 :

import sys
for i in xrange(0,10):
   sys.stdout.write(".")
   sys.stdout.flush()

새로운 (Python 3.0의 기간) print 함수에는 선택 사항이 있습니다 end 결말 문자를 수정할 수있는 매개 변수입니다. 또한 있습니다 sep 분리기 용.

funcTools.pratial을 사용하여 printf라는 새 함수를 만듭니다

>>> import functools

>>> printf = functools.partial(print, end="")

>>> printf("Hello world\n")
Hello world

기본 매개 변수로 기능을 래핑하는 쉬운 방법.

당신은 그냥 추가 할 수 있습니다 , 끝에 print 기능이 있으므로 새로운 라인에 인쇄되지 않습니다.

당신은 시도 할 수 있습니다:

import sys
import time
# Keeps the initial message in buffer.
sys.stdout.write("\rfoobar bar black sheep")
sys.stdout.flush()
# Wait 2 seconds
time.sleep(2)
# Replace the message with a new one.
sys.stdout.write("\r"+'hahahahaaa             ')
sys.stdout.flush()
# Finalize the new message by printing a return carriage.
sys.stdout.write('\n')

Python 3에서 인쇄는 기능입니다. 전화 할 때

print ('hello world')

파이썬은 그것을 번역합니다

print ('hello world', end = '\n')

원하는대로 끝을 바꿀 수 있습니다.

print ('hello world', end = '')
print ('hello world', end = ' ')

파이썬 2.6+:

from __future__ import print_function # needs to be first statement in file
print('.', end='')

파이썬 3:

print('.', end='')

Python <= 2.5:

import sys
sys.stdout.write('.')

Python 2에서 각 인쇄 후 여분의 공간이 정상인 경우

print '.',

오해의 소지가 있습니다 파이썬 2에서 - 피하다:

print('.'), # avoid this if you want to remain sane
# this makes it look like print is a function but it is not
# this is the `,` creating a tuple and the parentheses enclose an expression
# to see the problem, try:
print('.', 'x'), # this will print `('.', 'x') `

나는 최근에 같은 문제가 있었다 ..

나는 그것을함으로써 그것을 해결했다 :

import sys, os

# reopen stdout with "newline=None".
# in this mode,
# input:  accepts any newline character, outputs as '\n'
# output: '\n' converts to os.linesep

sys.stdout = os.fdopen(sys.stdout.fileno(), "w", newline=None)

for i in range(1,10):
        print(i)

이것은 Unix와 Windows에서 모두 작동합니다 ... MacOSX에서 테스트하지 않았습니다 ...

HTH

Python3에서 다음과 같이 동일한 작업을 수행 할 수 있습니다.

#!usr/bin/python

i = 0
while i<10 :
    print('.',end='')
    i = i+1

그리고 그것을 실행하십시오 python filename.py 또는 python3 filename.py

위의 모든 답변이 정확하다는 것을 알 수 있습니다. 그러나 나는 항상 "end = ''"매개 변수를 항상 작성하기 위해 바로 가기를 만들고 싶었습니다.

같은 함수를 정의 할 수 있습니다

def Print(*args,sep='',end='',file=None,flush=False):
    print(*args,sep=sep,end=end,file=file,flush=flush)

모든 매개 변수 수를 허용합니다. 파일, 플러시 등과 같은 다른 모든 매개 변수를 동일한 이름으로 허용합니다.

@lenooh 만족 내 쿼리가 있습니다.내가 발견한 이 기사를 검색하는 동안'python 을 억제하는 줄 바꿈'.내가 사용하여 IDLE3on Raspberry Pi 을 개발하는 파이썬 3.2PuTTY.을 만들고 싶었 진행 표시줄에 퍼티를 명령 라인입니다.나는 원하지 않는 페이지가 스크롤습니다.내가 원하는 수평선은 다시 보장에서 사용자가 도피하는 프로그램지 않은 cruncxed 중단 없으며 보냈습니 점심에는 메리는 무한 루프로 탄원하는'나를 떠나,나 잘 하고 있지만,이는 약간의 시간이 걸릴 수 있습니다.'메 같은 진행 표시줄에서 텍스트입니다.

print('Skimming for', search_string, '\b! .001', end='') 초기화는 메시지를 준비하여 다음에 대한 화면을 작성하는 것 인쇄 세 는로⌫⌫⌫rubout 다음 기간 동안,닦아'001'와 연장선의 기간입니다.후에 search_string 앵무새 사용자 입력, \b! 림 느낌표의 search_string 텍스트를 통해 다시 공간 print() 그렇지 않으면 힘이 제대로 배치도 있습니다.그 다음에 공백으로 첫 번째'dot'의'진행됩'나는 시뮬레이션.불필요하게 메시지는 또한 다음을 준비하는 페이지 번호와 함께(포맷을 길이의 세 가지 주요 영)시 사용자에서는 진전이 처리되고 있는 것입니다 또한 반영할 수 기간 동안 우리는 우리 것이 나중에 구축합니다.

import sys

page=1
search_string=input('Search for?',)
print('Skimming for', search_string, '\b! .001', end='')
sys.stdout.flush() # the print function with an end='' won't print unless forced
while page:
    # some stuff…
    # search, scrub, and build bulk output list[], count items,
    # set done flag True
    page=page+1 #done flag set in 'some_stuff'
    sys.stdout.write('\b\b\b.'+format(page, '03')) #<-- here's the progress bar meat
    sys.stdout.flush()
    if done: #( flag alternative to break, exit or quit)
        print('\nSorting', item_count, 'items')
        page=0 # exits the 'while page' loop
list.sort()
for item_count in range(0, items)
    print(list[item_count])
#print footers here
 if not (len(list)==items):
    print('#error_handler')

진행 표시줄기에 sys.stdout.write('\b\b\b.'+format(page, '03')) 라인입니다.첫째,삭제를 왼쪽,그것은 백업 위에 커서를 놓는 세 가지가 숫자와 함께'\b\b\b'로⌫⌫⌫rubout 울 기간 동안 새로운 추가를 진행됩 길이 있습니다.다음은 기록을 세 자리 숫자의 페이지로 진행하고있다.기 sys.stdout.write() 대기 가득 버퍼 또는 출력 채널을 가까이 sys.stdout.flush() 군의 즉각적인 쓰기. sys.stdout.flush() 장으로 끝나 print() 는 무시와 함께 print(txt, end='' ).다음 코드 루프를 통해 그것의 평범한 시간을 많이 사용하는 작업을 하는 동안 그것을 인쇄 아무것도 더할 때까지 반환 여기를 닦아 세 자리에 다시,기간을 추가고 쓰는 세 개의 자리 숫자,다시 증가합니다.

세 개의 자리를 닦고 다시 작성을 의미하여 필요한-그것은 단지 번창하는 예시 sys.stdout.write()print().할 수 있습만으로 쉽게 주요 기간을 잊어버리고 세 가지 멋진 백슬래-b⌫는(당연하지 작성 포맷 페이지수뿐만 아니라)의 인쇄 기간을 줄여 더 이상 하나의 각 시간을 통하지 않고 공간에는 줄 바꿈을 사용하는 sys.stdout.write('.'); sys.stdout.flush() 다.

참고하는 라즈베리 파이 IDLE3Python 쉘을 준수하지 않은 백스페이스로⌫rubout 그러나 대신에 인쇄 공간을 만들고,명백한 목록의 분수를 대신 합니다.

—(o=8>wiz

루프 오른쪽으로 무언가를 인쇄하고 싶지만 매번 새 줄로 인쇄하는 것을 원하지 않습니다.

 for i in range (0,5):
   print "hi"

 OUTPUT:
    hi
    hi
    hi
    hi
    hi

그러나 당신은 그것을 다음과 같이 인쇄하기를 원합니다 : 안녕하세요 Hi Hi Hi Hi 오른쪽 ???? "안녕하세요"인쇄 후 쉼표를 추가하십시오.

예시:

for i in range (0,5): print "hi", OUTPUT: hi hi hi hi hi

이 답변 중 다수는 조금 복잡해 보입니다. Python 3.x에서는 단순히 이것을합니다.

print(<expr>, <expr>, ..., <expr>, end=" ")

끝의 기본값은 " n"입니다. 우리는 단순히 그것을 공간으로 바꾸거나 end = ""도 사용할 수도 있습니다.

for i in xrange(0,10): print '\b.',

이것은 2.7.8 & 2.5.2 (각각 캐노피 및 OSX 터미널)에서 작동했습니다. 모듈 수입 또는 시간 여행이 필요하지 않았습니다.

또는 다음과 같은 기능이 있습니다.

def Print(s):
   return sys.stdout.write(str(s))

그럼 지금 :

for i in range(10): # or `xrange` for python 2 version
   Print(i)

출력 :

0123456789

이를 수행하는 일반적인 두 가지 방법이 있습니다.

파이썬 3.x에서 Newline없이 인쇄

인쇄문 후에는 아무것도 추가하고 사용하여 ' n'을 제거하십시오. end='' 처럼:

>>> print('hello')
hello  # appending '\n' automatically
>>> print('world')
world # with previous '\n' world comes down

# solution is:
>>> print('hello', end='');print(' world'); # end with anything like end='-' or end=" " but not '\n'
hello world # it seem correct output

루프의 또 다른 예:

for i in range(1,10):
    print(i, end='.')

Python 2.x에서 Newline없이 인쇄하십시오

후행 쉼표를 추가하면 인쇄 후 무시된다고합니다 \n.

>>> print "hello",; print" world"
hello world

루프의 또 다른 예:

for i in range(1,10):
    print "{} .".format(i),

이것이 당신을 도울 수 있기를 바랍니다. 당신은 이것을 방문 할 수 있습니다 링크 .

... 도서관을 가져올 필요가 없습니다. 삭제 문자 만 사용하십시오.

BS=u'\0008' # the unicode for "delete" character
for i in range(10):print(BS+"."),

이것은 Newline과 공간을 제거합니다 (^_^)*

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top