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 dos12', 'línea tres12']

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.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s