[pyar] Hola Mundo y [HELP!] Consulta sobre encoding de archivo...

Leandro E. Colombo Viña colomboleandro en gmail.com
Mar Mayo 28 10:32:24 ART 2013


Mis queridos, buen día y....

#!/usr/bin/env python

print("Hola Mundo!!!!")

Aprovecho para mandarles una consulta que hace días no me deja avanzar.
Tengo que hacer un script que necesito que lea un CSV (exportado de una
hoja de Excel) y complete con esos datos un formulario PDF.
Para eso estoy usando *fdfgen* para con los datos leídos del CSV construir
un FDF y con eso combinar los datos finalmente usando *pdftk*. Hasta ahora
eso no ha sido gran problema. Puedo leer un CSV de prueba, construir el FDF
y armar el PDF.

Entonces, cuál es el problema?!

Justamente, la codificación de los datos. El Excel me exporta el CSV en *
iso-8859-1* (a.k.a. *latin-1*) y ya intenté usando en el script las
instrucciones de http://www.python.org/dev/peps/pep-0263/ pero no tuve
éxito. Evidentemente estoy haciendo algo mal y no puedo encontrar qué es.

Les paso el script:

 #!/usr/bin/env python

# -*- coding: iso-8859-1 -*-

from fdfgen import forge_fdf

import os

import sys

import csv


sys.path.insert(0, os.getcwd())


csv_file = "Nómina.csv"

pdf_file = "Nómina-Formulario.pdf"

tmp_file = "tmp.fdf"

output_folder = './output/'



def process_csv(file):

headers = []

data = []

csv_data = csv.reader(open(file))


 for i, row in enumerate(csv_data):

if i == 0:

headers = row

print ((("Los encabezados del archivo son:") + str(headers)))

continue

field = []

for i in range(len(headers)):

field.append((str(headers[i]) + str(row[0]), row[i]))

print(field)

data.append(field)

return data


def form_fill(fields, j):

print((("Leyendo la entrada: ") + str(fields)))


 fdf = forge_fdf("", fields, [], [], [])

fdf_file = open(tmp_file, "w")

fdf_file.write(fdf)

fdf_file.close()


 output_file = '{0}COMPLETO-{2}-{1}'.format(output_folder, pdf_file, j)

aux_file = '{0}COMPLETO-{2}-{1}'.format(output_folder, pdf_file, j - 1)

remove_file = '{0}COMPLETO-{2}-{1}'.format(output_folder, pdf_file, j - 2)


 if j == 0:

print("Creando el primer archivo")

cmd = 'pdftk "{0}" fill_form "{1}" output "{2}" dont_ask'.format(pdf_file,
tmp_file, output_file)

else:

print((("Escribiendo {0} con los datos de {1} en {2}.").format(aux_file,
tmp_file, output_file)))

cmd = 'pdftk "{0}" fill_form "{1}" output "{2}" dont_ask'.format(aux_file,
tmp_file, output_file)

if j >= 2:

os.remove(remove_file)


 os.system(cmd)

os.remove(tmp_file)


data = process_csv(csv_file)

print ("\nDatos leídos del archivo {0}:\n").format(csv_file)

print data

print("\n\tSe leyeron: ") + repr(len(data)) + " registros.\n"


if len(data) > 78:

print("ERROR: El archivo de datos origen tiene demasiados registros.")

print("La Nómina como máximo se 78 entradas.")

print("Por favor, corrija los datos de entrada y vuelva a ejecutarlo.")

else:

j = 0

print('Generando Formulario Completo:')

print('------------------------------')

for i in data:
                form_fill(i, j)

j = j + 1


A todos los que hayan llegado hasta acá, ya les agradezco por haberme
leído! Y a los que me respondan les agradezco de antemano!!!!
Saludos!
LEO.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130528/c8c918ba/attachment.html>


More information about the pyar mailing list