Tengo este script de Python donde necesito ejecutar gdal_retile.py
pero obtengo una excepción en esta línea:
if Verbose:
print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')
La end=''
sintaxis no es válida. Tengo curiosidad por saber por qué y lo que probablemente pretendía hacer el autor.
Soy nuevo en Python si aún no lo has adivinado.
Creo que la causa principal del problema es que estas importaciones están fallando y, por lo tanto, uno debe contener esta importación. 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 *
__future__
importación.ClassNames
deben comenzar con una letra minúscula.Respuestas:
¿Estás seguro de que estás usando Python 3.x? La sintaxis no está disponible en Python 2.x porque
print
sigue siendo una declaración.en Python 2.x es idéntico a
o
es decir, como una llamada a imprimir con una tupla como argumento.
Obviamente, esa es una mala sintaxis (los literales no aceptan argumentos de palabras clave). En Python 3.x
print
es una función real, por lo que también toma argumentos de palabras clave.El modismo correcto en Python 2.x para
end=" "
es:(tenga en cuenta la coma final, esto hace que termine la línea con un espacio en lugar de un salto de línea)
Si desea tener más control sobre la salida, considere usar
sys.stdout
directamente. Esto no hará ninguna magia especial con la salida.Por supuesto, en versiones algo recientes de Python 2.x (2.5 debería tenerlo, no estoy seguro acerca de 2.4), puede usar el
__future__
módulo para habilitarlo en su archivo de script:Lo mismo ocurre con
unicode_literals
y algunas otras cosas agradables (with_statement
por ejemplo). Sin embargo, esto no funcionará en versiones realmente antiguas (es decir, creadas antes de que se introdujera la función) de Python 2.x.fuente
dpkg -p python
y era la versión 2.xx.xx. Muchas gracias, apliqué la sugerencia para ponerlo en forma deprint "foo" %bar,
y funcionó perfectamente bien.print foo, bar
yprint (foo, bar)
en Python 2. La primera es unaprint
declaración con dos elementos en su lista de "argumentos"; la última es unaprint
declaración con una sola tupla en su lista de argumentos.print("foo" % bar, end=" ")
no funcionará, yabar
que no está definido; entonces, ¿qué haybar
en tu ejemplo? (Al menos para mí con Python 3.7)Qué tal esto:
Esto le permite utilizar la
print
función de estilo Python 3.0 sin tener que editar manualmente todas las apariciones deprint
:)fuente
En Python 2.7, así es como se hace
En Python 3.x
fuente
h a c k e r
tiene espacios entre caracteres. Estoy usando Python 3.7.3 y no obtengo ningún espacio conend=''
.En primer lugar, le falta una cita al principio, pero probablemente se trate de un error de copiar / pegar.
En Python 3.x, la
end=' '
parte colocará un espacio después de la cadena mostrada en lugar de una nueva línea. Para hacer lo mismo en Python 2.x, pondría una coma al final:fuente
Creo que está usando Python 3.0 y tú estás usando Python 2.6.
fuente
print("foo" % bar, end = " ")
desencadena un error de sintaxis en Python 2.6end = " "
al igual que lo hace la cita que falta :)Esto es solo una versión. Desde Python 3.x, la impresión es en realidad una función, por lo que ahora toma argumentos como cualquier función normal.
El
end=' '
es solo para decir que desea un espacio después del final de la declaración en lugar de un carácter de nueva línea. En Python 2.x, tendría que hacer esto colocando una coma al final de la declaración de impresión.Por ejemplo, en un entorno Python 3.x:
Dará el siguiente resultado:
Donde como:
Dará como salida:
fuente
print()
podría ser útil, ya que allí se puede ver el valor predeterminado'\n'
del argumentoend
: docs.python.org/3/library/functions.html#printParece que le falta una comilla doble de apertura. Tratar:
fuente
Creo que el autor probablemente quiso decir:
Le falta una cita inicial después
print(
.Tenga en cuenta que a partir de Python 3.0 ,
print
es una función en lugar de una declaración, si está utilizando versiones anteriores de Python, el equivalente sería:El
end
parámetro significa que la línea llega' '
al final en lugar de un carácter de nueva línea. El equivalente en versiones anteriores de Python es:(gracias Ignacio).
fuente
,
al final lo hará.UTILIZAR ::
python3 filename.py
Tuve tal error, esto ocurrió porque tengo dos versiones de python instaladas en mi disco, a saber, python2.7 y python3. A continuación estaba mi código:
cuando lo ejecuto con el comando
python lines.py
, obtengo el siguiente errorcuando lo ejecuto con el comando
python3 lines.py
que ejecuté con éxitofuente
Para python 2.7 tuve el mismo problema. Simplemente use " from __future__ import print_function " sin comillas para resolver este problema. Esto garantiza que Python 2.6 y posteriores Python 2.x puedan usar la función de impresión Python 3.x.
fuente
Pruebe este si está trabajando con python 2.7:
fuente
Incluso yo estaba recibiendo el mismo error hoy. Y he experimentado algo interesante. Si está usando Python 3.xy sigue recibiendo el error, podría ser una razón:
Recibí el mismo error hoy y noté esa cosa. Créame, cuando ejecuto mi código desde la ventana de shell adecuada (de la versión 3.x), obtengo resultados satisfactorios
fuente
necesitamos importar un encabezado antes de usarlo
end=''
, ya que no está incluido en el tiempo de ejecución normal de Python.funcionará perfectamente ahora
fuente
Compatible con tanto Python 2 y 3 :
Compatible solo con Python 2
Compatible solo con Python 3
fuente