lectura de un fichero txt

Chema Cortes pych3m4 en gmail.com
Lun Abr 17 04:11:11 CEST 2006


El Sábado, 15 de Abril de 2006 19:41, Jose Antonio escribió:
> alguien puede decirme como puedo ordenar los registros de un fichero de
> texto, el fichero en cuestion tiene la siguiente estructura: cada linea es
> un registro y los campos de cada registro van separados por el caracter ";"
> o sea que cada campo de un registro va separado por un punto y coma.
>
> Quisiera ordenar los registros de menor a mayor por el primer campo de cada
> registro que es la clave.


Pues yo propongo otra alternativa, bastante más corta :-DD

def primer_registro(linea):
  return linea.split(";")[0]

file(salida,"w").writelines(
sorted(file(entrada).readlines(),cmp,key=primer_registro) )


En realidad, no haría falta la función "primer_registro" puesto que, por
defecto, se compararía la línea completa; pero la he añadido por si se
quisiera ordenar por otro campo que no fuera el primero.


Una advertencia: el fichero de salida debe ser diferente al de entrada, ya que
se empieza a escribir antes de terminar de leerlo (cosa de "iteradores"). Si
se quiere que sea el mismo fichero hay que leerlo entero a memoria antes de
empezar a escribirlo:


registros=sorted(file(archivo).readlines(),cmp,primer_registro)
file(archivo,"w").writelines(registros)




Más información sobre la lista de distribución Python-es