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