[python] 파이썬 print end = ”

이 파이썬 스크립트를 실행해야합니다. 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 *



답변

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의 실제 오래된 버전 (즉, 기능이 도입되기 전에 생성됨)에서는 작동하지 않습니다.


답변

이건 어때요:

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

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


답변

파이썬 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 


답변

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

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

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


답변

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


답변

이것은 단지 버전 문제입니다. 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


답변

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

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