Me pregunto si alguien con una mejor comprensión de python y gae puede ayudarme con esto. Estoy cargando un archivo csv desde un formulario al almacén de datos de gae.Cargar y analizar el archivo csv con el motor de la aplicación google
class CSVImport(webapp.RequestHandler):
def post(self):
csv_file = self.request.get('csv_import')
fileReader = csv.reader(csv_file)
for row in fileReader:
self.response.out.write(row)
estoy corriendo en el mismo problema que otra persona menciona aquí - http://groups.google.com/group/google-appengine/browse_thread/thread/bb2d0b1a80ca7ac2/861c8241308b9717
Es decir, el csv.reader la iteración del cada personaje y no la línea. Un ingeniero de Google dejó esta explicación:
La llamada self.request.get ('csv') devuelve una cadena. Cuando itera sobre una cadena , itera sobre los caracteres, no sobre las líneas. Se puede ver la diferencia aquí:
class ProcessUpload(webapp.RequestHandler):
def post(self):
self.response.out.write(self.request.get('csv'))
file = open(os.path.join(os.path.dirname(__file__), 'sample.csv'))
self.response.out.write(file)
# Iterating over a file
fileReader = csv.reader(file)
for row in fileReader:
self.response.out.write(row)
# Iterating over a string
fileReader = csv.reader(self.request.get('csv'))
for row in fileReader:
self.response.out.write(row)
Realmente no sigo la explicación, y no tuvo éxito su aplicación. ¿Alguien puede dar una explicación más clara de esto y una solución propuesta?
Gracias, agosto
Gracias por la explicación, ahora tiene mucho más sentido para mí. –
Consideraría usar .splitlines() en lugar de .split ('\ n') –