parametro - python print end='' r
python print end='''' (13)
Tengo este script de python donde necesito ejecutar gdal_retile.py
pero recibo una excepción en esta línea:
if Verbose:
print("Building internam Index for %d tile(s) ..." % len(inputTiles), end='' '')
El end=''''
es una sintaxis inválida. Tengo curiosidad sobre 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 usando Python 3.x? La sintaxis no está disponible en Python 2.x porque print
sigue siendo una declaración.
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 sintaxis mala (los literales no toman argumentos de palabra clave). En Python 3.x print
es una función real, por lo que también toma argumentos de palabra clave.
La expresión correcta en Python 2.x para end=" "
es:
print "foo" % bar,
(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 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 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 que se introdujera la característica) de Python 2.x.
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 contraposición a una declaración, si está utilizando 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).
Creo que está usando Python 3.0 y estás usando Python 2.6.
En primer lugar, te falta una cita al principio, pero este 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ía una coma al final:
print "Building internam Index for %d tile(s) ..." % len(inputTiles),
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 del enunciado en lugar de un nuevo carácter de línea. En Python 2.x, debe hacer esto colocando una coma al final de la instrucción de impresión.
Por ejemplo, cuando estás en un entorno de Python 3.x:
while i<5:
print(i)
i=i+1
Dará el siguiente resultado:
0
1
2
3
4
Donde como:
while i<5:
print(i, end = '' '')
i=i+1
Dará como resultado:
0 1 2 3 4
Necesitamos importar un encabezado antes de usar end=''''
, ya que no está incluido en el tiempo de ejecución normal del Python.
from __future__ import print_function
funcionará perfectamente ahora
Para Python 2.7 tuve el mismo problema Solo use " de __future__ import print_function " sin comillas para resolver este problema. Esto asegura que Python 2.6 y posterior Python 2.x puede usar la función de impresión de Python 3.x.
Parece que te falta una comilla doble de apertura. Tratar:
if Verbose:
print("Building internam Index for %d tile(s) ..." % len(inputTiles), end='' '')
Pruebe este si está trabajando con Python 2.7:
from __future__ import print_function
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
:)
USE :: python3 filename.py
Tuve tal error, esto ocurrió porque tengo dos versiones de python instaladas en mi disco, a saber, python2.7 y python3. Lo siguiente fue mi código:
#!usr/bin/python
f = open(''lines.txt'')
for line in f.readlines():
print(line,end ='''')
cuando lo ejecuto por el comando python lines.py
recibí 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
éxito
Incluso yo estaba recibiendo el mismo error hoy. Y he experimentado algo interesante. Si está utilizando Python 3.xy todavía obtiene el error, podría ser una razón:
Tienes múltiples versiones de Python instaladas en la misma unidad. Y cuando presiona el botón f5, aparece la ventana del shell de Python (de ver. <3.x)
Hoy recibí el mismo error 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
En Python 2.7 aquí está cómo lo haces
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
En python 3.x
myjob= ''hacker''
for c in myjob: print (c, end='''')
#output
h a c k e r