python print end = ”

Tengo este script de Python donde necesito ejecutar gdal_retile.py

pero tengo una excepción en esta línea:

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

El end='' no es syntax válida. Tengo curiosidad por saber por qué, y lo que el autor probablemente quiso hacer.

Soy nuevo en Python si aún no lo has adivinado.


Creo que la causa raíz 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 * 

¿Estás seguro de que estás utilizando Python 3.x? La syntax no está disponible en Python 2.x porque la print sigue siendo una statement.

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

en Python 2.x es idéntico a

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

o

 print "foo" % bar, end=" " 

es decir, como una llamada para imprimir con una tupla como argumento.

Esa es obviamente una mala syntax (los literales no toman argumentos de palabras clave). En Python 3.x, la print es una función real, por lo que también toma argumentos de palabras clave.

El idioma correcto en Python 2.x para end=" " es:

 print "foo" % bar, 

(note la coma final, esto hace que termine la línea con un espacio en lugar de un salto de línea)

Si desea más control sobre la salida, considere usar sys.stdout directamente. Esto no hará ninguna magia especial con la salida.

Por supuesto, en las versiones algo recientes de Python 2.x (2.5 debería tenerlo, no está seguro de 2.4), puede usar el módulo __future__ para habilitarlo en su archivo de script:

 from __future__ import print_function 

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 la introducción de la función) de Python 2.x.

Qué tal esto:

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

Esto le permite utilizar la función de print estilo Python 3.0 sin tener que editar manualmente todas las apariciones de print 🙂

En Python 2.7 aquí es cómo lo haces.

 mantra = 'Always look on the bright side of life' for c in mantra: print c, #output A lwayslookonthebrights ideoflife 

En python 3.x

 myjob= 'hacker' for c in myjob: print (c, end='') #output hacker 

En primer lugar, le falta una cita al principio, pero esto es probablemente un error de copiar / pegar.

En Python 3.x, la parte end=' ' 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ías una coma al final:

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

Creo que está usando Python 3.0 y tú estás usando Python 2.6.

Esto es sólo una versión de la versión. Desde Python 3.x, la impresión es en realidad una función, por lo que ahora toma argumentos como cualquier otra función normal.

El end=' ' es solo para decir que desea un espacio después del final de la statement en lugar de un nuevo carácter de línea. En Python 2.x deberías hacer esto colocando una coma al final de la statement de impresión.

Por ejemplo, cuando se está en un entorno Python 3.x:

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

Dará la siguiente salida:

 0 1 2 3 4 

Donde como

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

Dará como salida:

 0 1 2 3 4 

Parece que te estás perdiendo una cita doble de apertura. Tratar:

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

Creo que el autor probablemente quiso decir:

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

Le falta una cita inicial después de la print( .

Tenga en cuenta que a partir de Python 3.0 , print es una función en lugar de una statement, si está usando versiones anteriores de Python, el equivalente sería:

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

El parámetro end significa que la línea obtiene ' ' al final en lugar de un carácter de nueva línea. El equivalente en versiones anteriores de Python es:

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

(gracias Ignacio).

Para Python 2.7 tuve el mismo problema. Solo use ” from __future__ import print_function ” sin comillas para resolver este problema. Esto garantiza que Python 2.6 y posterior Python 2.x puede usar la función de impresión Python 3.x.

Prueba este si estás trabajando con python 2.7:

 from __future__ import print_function 

Incluso yo estaba recibiendo el mismo error hoy. Y he experimentado algo interesante. Si estás usando Python 3.x y aún obtienes el error, puede ser una razón:

Tienes varias versiones de python instaladas en la misma unidad. Y cuando presiona el botón f5, aparece la ventana de shell de python (de la versión <3.x)

Estaba recibiendo el mismo error hoy, y noté esa cosa. Confíe en mí, cuando ejecuto mi código desde la ventana de shell adecuada (de la versión 3.x), obtuve resultados satisfactorios

USE :: python3 filename.py

Tuve tal error, esto ocurrió porque tengo dos versiones de python instaladas en mi disco: python2.7 y python3. A continuación fue mi código:

 #!usr/bin/python f = open('lines.txt') for line in f.readlines(): print(line,end ='') 

cuando lo python lines.py con el comando python lines.py obtuve el siguiente error

 #!usr/bin/python f = open('lines.txt') for line in f.readlines(): print(line,end ='') 

cuando lo ejecuto con el comando python3 lines.py exitosamente

necesitamos importar un encabezado antes de usar end='' , ya que no está incluido en el tiempo de ejecución normal de python.

 from __future__ import print_function 

funcionará perfectamente ahora