11.1. Archivos de texto

Un archivo de texto es un archivo que contiene caracteres imprimibles y espacios organizados en líneas separadas por caracteres de salto de línea. Como Python esta diseñado específicamente para procesar archivos de texto, proporciona métodos que facilitan la tarea.

Para hacer una demostración, crearemos un archivo de texto con tres líneas de texto separadas por saltos de línea:

   1: >>> f = open("test.dat","w")
   2: >>> f.write("línea uno\nl³nea dos\nlínea tres\n")
   3: >>> f.close()

El metodo readline lee todos los caracteres hasta e inclusive el siguiente salto de línea:



   1: >>> f = open("test.dat","r")
   2: >>> print f.readline()
   3: línea uno
   4: >>>

readlines devuelve todas las líneas que queden como una lista de cadenas:



   1: >>> print f.readlines()
   2: ['línea dos\012', 'línea tres\012']

En este caso, la salida esta en forma de lista, lo que significa que las cadenas aparecen con comillas y el carácter de salto de línea aparece como la secuencia de escape 012.


Al final del archivo, readline devuelve una cadena vacía y readlines devuelve una lista vacía:





   1: >>> print f.readline()
   2: >>> print f.readlines()
   3: []

Lo que sigue es un ejemplo de un programa de proceso de líneas. filtraArchivo hace una copia de archViejo, omitiendo las líneas que comienzan por #:




   1: def filtraArchivo(archViejo, archNuevo):
   2:     f1 = open(archViejo, "r")
   3:     f2 = open(archNuevo, "w")
   4:     while 1:
   5:         texto = f1.readline()
   6:         if texto == "":
   7:             break
   8:         if texto[0] == '#':
   9:             continue
  10:         f2.write(texto)
  11:     f1.close()
  12:     f2.close()
  13:     return

La sentencia continue termina la iteración actual del bucle, pero sigue haciendo bucles. El flujo de ejecución pasa al principio del bucle, comprueba la condición y continua en consecuencia.


Así, si texto es una cadena vacía, el bucle termina. Si el primer carácter de texto es una almohadilla, el flujo de ejecución va al principio del bucle. Solo si ambas condiciones fallan copiamos texto en el archivo nuevo.

0