El día 29 de julio de 2011 18:14, alito Z <alit...@gmail.com> escribió:
>
> Hola lasizoillo:
> Trataré de responder tus preguntas.
> Si, el fichero de salida debe tener el mismo número de campos haya o no
> unión.

En una parte del programa tienes que tener una forma de generar
registros del archivo2 vacios.

> Los archivos no están separados por tabulados, en realidad es por número de
> columna.

Esto implica varias cosas:
 * Para generar un registro vacio se puede hacer con: " " * TAM_REG_2,
donde TAM_REG_2 sería el tamaño del registro 2. Se puede cambiar " "
por "\xff" o el valor que tengan los campos vacios.
 * Para sacar el identificador de los ficheros para comparar puedes
sacarlo mediante linea[0:TAM_FIELD1], donde TAM_FIELD1 es el tamaño
del campo 1 (el identificador).

> Los ficheros si están ordenados.

Eso quiere decir que si en el fichero 1 tienes el registro id 1, y en
el fichero 2 el registro id 3, puedes asumir el registro del primer
fichero le tienes que concatenar los campos vacios. Y lo mismo si
hubiera posteriormente un registro con id 2 en el fichero 1.

Si haces open("fichero1.txt") eso que obtienes es ya un iterador. Por
lo cual puedes recorrerlos explicitamente con la función next del
fichero abierto. Cuando no queden más lineas devolvera una excepción
de tipo StopIteration.

> Y si, siempre va a haber un registro en archivo 1 cuando exista un archivo
> 2.

Saber esto simplifica el programa. Puedes iterar el fichero 2 y
recordar el próximo id de registro con valores. Luego iterar el
fichero uno mientras el identificador sea menor y rellenando los
campos del fichero 2 a vacio. Rellenar con los datos del fichero2
cuando los identificadores sean iguales y volver a iterar sobre el
fichero 2.

Con eso generarar un procesado óptimo para tu caso concreto.

Saludos:

Javi
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a