파이썬 print end = ''


115

이 파이썬 스크립트를 실행해야합니다. gdal_retile.py

하지만이 줄에 예외가 있습니다.

if Verbose:
   print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')

end=''유효하지 않은 구문입니다. 나는 이유와 저자가하려는 의도가 궁금합니다.

나는 당신이 아직 추측하지 않았다면 파이썬을 처음 접했습니다.


문제의 근본 원인은 이러한 가져 오기가 실패했기 때문에 가져 오기를 포함해야한다는 것입니다. from __future__ import print_function

try: 
   from osgeo import gdal
   from osgeo import ogr
   from osgeo import osr
   from osgeo.gdalconst import *
except:
   import gdal
   import ogr
   import osr
   from gdalconst import *

2
수신 한 예외를 가장 잘 진단하기 위해 트레이스 백을 게시하면 정말 도움이됩니다. 명백한 구문 오류는 여는 따옴표가 없기 때문입니다. 이것이 수정 되었다면, __future__가져 오기 없이는 인쇄 기능이없는 Python 2에서 여전히 구문 오류 일 것입니다 .
Mike Graham

2
제쳐두고, 변수가 아닌 변수 ClassNames는 소문자로 시작해야합니다.
Mike Graham

wrt / @Mike, Python의 변수 이름 지정 및 코딩 스타일에 대한 전체 지침 은 python.org/dev/peps/pep-0008 을 참조하십시오 . Python에서는 대부분 일관된 라이브러리로 작업 할 수있는 권한이 있으므로 다른 사람의 코드로 작업하는 경우에도 일반적인 추측 게임 (예 : PHP)을 피할 수 있기 때문에 지침을 따르는 것이 좋습니다.
Alan Plum

5
향후 오류, 특히 구문 오류에 대한 도움을 요청할 때는 다시 입력하지 않고 실행을 시도한 정확한 코드 를 제공해야합니다 .
Mike Graham

@Mike-나는 일반적으로 그것을 다시 입력하는 것을 귀찮게하지 않을 것이지만 코드가 원격 컴퓨터에 있기 때문에 그렇게 할 수 없었습니다. 앞으로 더 조심 할게요.
Hath

답변:


155

Python 3.x를 사용하고 있습니까? 구문은 print여전히 명령문 이기 때문에 Python 2.x에서 사용할 수 없습니다 .

print("foo" % bar, end=" ")

Python 2.x에서

print ("foo" % bar, end=" ")

또는

print "foo" % bar, end=" "

즉, 튜플을 인수로 사용하여 인쇄하기위한 호출로.

이것은 분명히 잘못된 구문입니다 (리터럴은 키워드 인수를 사용하지 않음). Python 3.x에서print 실제 함수이므로 키워드 인수도 사용합니다.

Python 2.x의 올바른 관용구 end=" "는 다음과 같습니다.

print "foo" % bar,

(마지막 쉼표에 유의하십시오. 이렇게하면 줄 바꿈이 아닌 공백으로 줄이 끝납니다)

출력을 더 많이 제어하려면 sys.stdout직접 사용 하는 것이 좋습니다. 이것은 출력에 특별한 마법을 적용하지 않습니다.

물론 최신 버전의 Python 2.x (2.5에는 2.4에 대해 확실하지 않음)에서는 __future__모듈을 사용하여 스크립트 파일에서 활성화 할 수 있습니다 .

from __future__ import print_function

unicode_literals다른 좋은 것들 ( with_statement예 :)도 마찬가지 입니다. 그러나 이것은 Python 2.x의 실제 오래된 버전 (즉, 기능이 도입되기 전에 생성됨)에서는 작동하지 않습니다.


1
내 버전을 사용하여 확인 dpkg -p python했는데 버전 2.xx.xx였습니다. 정말 감사합니다. 제안을 적용하여 형식으로 print "foo" %bar, 했는데 완벽하게 잘 작동했습니다.
Mehrad 2014

사이 (미묘한) 차이가 명심 print foo, bar하고 print (foo, bar)파이썬 2. 이전에이되는 print그 "인수"목록에 두 개의 항목 문; 후자는 print인수 목록에 단일 튜플 이있는 명령문입니다.
chepner

정의 print("foo" % bar, end=" ")되지 않았으므로 예제 가 작동 bar하지 않습니다. 그래서 bar당신의 예는 무엇입니까? (적어도 Python 3.7을 사용하는 나에게는)
Qaswed 2019

50

이건 어때요:

#Only for use in Python 2.6.0a2 and later
from __future__ import print_function

이렇게하면 :)의 print모든 항목을 직접 편집 할 필요없이 Python 3.0 스타일 함수 를 사용할 수 있습니다.print


17

파이썬 2.7에서 여기에 방법이 있습니다.

mantra = 'Always look on the bright side of life'
for c in mantra: print c,

#output
A l w a y s   l o o k   o n   t h e   b r i g h t   s i d e   o f   l i f e

파이썬 3.x에서

myjob= 'hacker'
for c in myjob: print (c, end=' ')
#output 
h a c k e r 

5
야, 이틀 동안 헷갈리는 문제 만 풀면, 그 휘파람과 옛날 장면 만 기억하지만 리리스는 기억 나지 않아, 이제 드디어 그 노래가 뭔지 알아 내 !!
Sphynx-HenryAY

스핑크스 - HenryAY의 행복 @ 동생이 당신을 도울 수 있습니다
Ritesh Karwa

두 번째 예에서는 h a c k e r 문자 사이에 공백이있는 것으로 보입니다 . 저는 Python 3.7.3을 사용하고 있으며 end=''.
Nagev

@Nagev은 '사이'말 = '공간'넣어
Ritesh Karwa

감사 합니다. 공간이 필요하지 않습니다 . 공간 이 없는 코드 봤다고 생각 했지만 출력은 간격이있어 일관성이 없어 보였습니다. 그게 전부입니다.
Nagev

5

우선, 처음에 따옴표가 누락되었지만 아마도 복사 / 붙여 넣기 오류 일 수 있습니다.

Python 3.x에서 end=' '부분은 개행 대신 표시된 문자열 뒤에 공백을 배치합니다. Python 2.x에서 동일한 작업을 수행하려면 끝에 쉼표를 넣습니다.

print "Building internam Index for %d tile(s) ..." % len(inputTiles),

나는 파이썬 2에서 이와 같은 것을하기 위해 intersted입니다 구문은 무엇입니까? 쉼표를 추가한다는 것은 무슨 뜻입니까?
Rémi

1
@ Rémi 내 대답의 코드는 Python 2입니다. 그리고 마지막에 쉼표를 참조하고 있습니다.
interjay

4

나는 그가 Python 3.0을 사용하고 있고 당신은 Python 2.6을 사용하고 있다고 생각합니다.


1
좋은 지적! 누락 된 따옴표처럼 print("foo" % bar, end = " ")Python 2.6에서 구문 오류가 발생합니다. end = " ":)
badp

3

이것은 단지 버전 문제입니다. Python 3.x부터 인쇄는 실제로 함수이므로 이제 일반 함수와 같은 인수를받습니다.

end=' '당신이 문 대신 새로운 라인 문자의 종료 후 공간을 원하는 말을 그냥. Python 2.x에서는 print 문 끝에 쉼표를 추가하여이를 수행해야합니다.

예를 들어 Python 3.x 환경에있는 경우 :

while i<5:
    print(i)
    i=i+1

다음 출력을 제공합니다.

0
1
2
3
4

어디에 :

while i<5:
    print(i, end = ' ')
    i=i+1

출력으로 제공합니다.

0 1 2 3 4

인수 print()의 기본값을 볼 수 있으므로 의 공식 문서에 대한 링크 가 도움이 될 수 있습니다 . docs.python.org/3/library/functions.html#print'\n'end
Qaswed

위의 예와 같이 끝에 공백을 잊지 마세요. "hacker"여기서 출력은 "0 1 2 3 4"이고 마지막 공백이
있어야

2

여는 큰 따옴표가 누락 된 것 같습니다. 시험:

if Verbose:
   print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')

1

저자는 아마도 다음을 의미했다고 생각합니다.

if Verbose:
   print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')

그는 뒤에 초기 견적이 없습니다 print(.

참고 현재의 것을 파이썬 3.0 , print파이썬의 이전 버전을 사용하는 경우 성명에 반대하는 기능이며, 동등한은 다음과 같습니다

print "Building internam Index for %d tile(s) ..." % len(inputTiles)

end매개 변수는 줄이 ' '줄 바꿈 문자가 아니라 끝에 도착 함을 의미합니다 . 이전 버전의 Python에 해당하는 것은 다음과 같습니다.

print "Building internam Index for %d tile(s) ..." % len(inputTiles),

(Ignacio에게 감사드립니다).


1
,끝에 a 를 추가하면 됩니다.
Ignacio Vazquez-Abrams

1

사용하다 :: python3 filename.py

그런 오류가 발생했습니다. 내 드라이브에 python2.7 및 python3이라는 두 가지 버전의 Python이 설치되어 있기 때문에 발생했습니다. 다음은 내 코드입니다.

#!usr/bin/python

f = open('lines.txt')
for line in f.readlines():
        print(line,end ='')

명령으로 실행할 때 python lines.py다음 오류가 발생했습니다.

#!usr/bin/python

f = open('lines.txt')
for line in f.readlines():
        print(line,end ='')

내가 python3 lines.py성공적으로 실행 한 명령으로 실행할 때


3
#! / usr / bin / env python3
Mingliang Liu

1

Python 2.7의 경우 동일한 문제가 발생했습니다. " from __future__ import print_function "을 따옴표없이 사용하면이 문제를 해결할 수 있습니다. 이렇게하면 Python 2.6 이상 Python 2.x에서 Python 3.x 인쇄 기능을 사용할 수 있습니다.


1

파이썬 2.7로 작업하는 경우 이것을 시도하십시오.

from __future__ import print_function

StackOverflow에 오신 것을 환영합니다. 코드, XML 또는 데이터 샘플을 게시하는 경우 텍스트 편집기에서 해당 줄을 강조 표시하고 편집기 도구 모음에서 "코드 샘플"버튼 ({})을 클릭하거나 키보드에서 Ctrl + K를 사용하여 형식을 멋지게 지정하세요. 구문 강조 표시!
WhatsThePoint

0

오늘도 같은 오류가 발생했습니다. 그리고 저는 흥미로운 것을 경험했습니다. python 3.x를 사용 중이고 여전히 오류가 발생하는 경우 이유가있을 수 있습니다.

동일한 드라이브에 여러 Python 버전이 설치되어 있습니다. 그리고 f5 버튼을 누르면 파이썬 쉘 창이 (버전 <3.x) 팝업됩니다.

나는 오늘도 같은 오류가 발생했고 그 사실을 발견했습니다. 내 코드를 적절한 쉘 창 (버전 3.x)에서 실행하면 만족스러운 결과를 얻었습니다.


0

를 사용하기 전에 헤더를 가져와야 end=''합니다. 이는 파이썬의 일반 런타임에 포함되어 있지 않기 때문입니다.

from __future__ import print_function

이제 완벽하게 작동합니다


0

호환 모두 파이썬 2 & 3 :

sys.stdout.write('mytext')

Python 2 와만 호환

print 'mytext',

Python 3 와만 호환

print('mytext', end='')
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.