I have this python script where I need to run gdal_retile.py
but I get an exception on this line:
if Verbose:
print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')
The end=''
is invalid syntax. I am curious as to why, and what the author probably meant to do.
I'm new to python if you haven't already guessed.
I think the root cause of the problem is that these imports are failing
and therefore one must contain this import 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 *
Try this one if you are working with python 2.7:
we need to import a header before using
end=''
, as it is not included in the python's normal runtime.it shall work perfectly now
First of all, you're missing a quote at the beginning but this is probably a copy/paste error.
In Python 3.x, the
end=' '
part will place a space after the displayed string instead of a newline. To do the same thing in Python 2.x, you'd put a comma at the end:For python 2.7 I had the same issue Just use "from __future__ import print_function" without quotes to resolve this issue.This Ensures Python 2.6 and later Python 2.x can use Python 3.x print function.
In python 2.7 here is how you do it
In python 3.x
Are you sure you are using Python 3.x? The syntax isn't available in Python 2.x because
print
is still a statement.in Python 2.x is identical to
or
i.e. as a call to print with a tuple as argument.
That's obviously bad syntax (literals don't take keyword arguments). In Python 3.x
print
is an actual function, so it takes keyword arguments, too.The correct idiom in Python 2.x for
end=" "
is:(note the final comma, this makes it end the line with a space rather than a linebreak)
If you want more control over the output, consider using
sys.stdout
directly. This won't do any special magic with the output.Of course in somewhat recent versions of Python 2.x (2.5 should have it, not sure about 2.4), you can use the
__future__
module to enable it in your script file:The same goes with
unicode_literals
and some other nice things (with_statement
, for example). This won't work in really old versions (i.e. created before the feature was introduced) of Python 2.x, though.