La manipulación de archivos de texto es, a priori, la más simple y la que vamos a trabajar en este taller.
Antes de trabajar con la información que se encuentra contenida en un archivo debemos abrirlo, para eso se usa la función open().
Esta función open acepta dos parámetros, nombre de archivo y modo de trabajo.
Hay 4 modos:
“r” Valor por default si no se indica modo alguno. Permite leer un archivo. Genera una excepción si el archivo no existe.
“a” Abre el archivo para anexar información, crea el archivo si no existe.
“w” Abre el archivo para escritura, si tiene contenido lo reescribe, crea el archivo si no existe.
“x” Crea un archivo, si existe genera una excepción.
Adicionalmente se le puede anexar al modo:
“t” trabaja el archivo en modo texto. Valor por default.
“b” trabaja el archivo en modo binario.
Leer un archivo
Recuerde que el archivo indicado debe estar en el mismo directorio que su programa python.
1
2
3
4
archivo=open("taller.txt")#Por defecto lo abre en modo lectura y modo textocontenido=archivo.read()#La función read devuelve el contenido del archivo.archivo.close()#Siempre se debe cerrar el archivoprint(contenido)#Mostramos en pantalla el contenido
Leer determinada cantidad de caracteres de un archivo
Usamos read(n) donde n es la cantidad de caracteres a leer.
Recuerde que la función read() devuelve el contenido como una cadena de caracteres.
1
2
3
4
archivo=open("taller.txt")#Por defecto lo abre en modo lectura y modo textocontenido=archivo.read(5)#La función read(5) devuelve los primeros cinco caracteresarchivo.close()#Siempre se debe cerrar el archivoprint(contenido)#Mostramos en pantalla el contenido
Leer un renglón del archivo
Para leer un renglón usamos la función readline()
1
2
3
4
archivo=open("taller.txt")#Por defecto lo abre en modo lectura y modo textocontenido=archivo.readline()#La función readline devuelve el primer renglón del archivo.archivo.close()#Siempre se debe cerrar el archivoprint(contenido)#Mostramos en pantalla el contenido
Si invocamos a la función readline() dos veces, mientras el archivo se encuentra abierto, leeremos el primer y el segundo renglón del mismo.
1
2
3
4
5
6
archivo=open("taller.txt")#Por defecto lo abre en modo lectura y modo textocontenido=archivo.readline()#La función readline devuelve el primer renglón del archivo.print(contenido)#Mostramos en pantalla contenido=archivo.readline()#La función readline devuelve el segundo renglón del archivo.print(contenido)#Mostramos en pantallaarchivo.close()#Siempre se debe cerrar el archivo
Esta última práctica no es habitual.
Lo recomendable es usar un bucle for para leer el contenido del archivo renglón a renglón.
1
2
3
4
archivo=open("taller.txt")#Por defecto lo abre en modo lectura y modo textoforxinarchivo:print(x)#x va a ser igual al contenido de cada renglónarchivo.close()#Siempre cerrar el archivo
Convertir el contenido del archivo en una lista
Muchas veces resulta conveniente volcar el contenido del archivo en una lista debido a la versatilidad de esta. Para ello usamos la función split() que esta disponible para las cadenas de caracteres.
La sintaxis es:
1
split(separador)
donde separador es el carácter que separa a cada elemento.
Si no se declara un separador, el espacio en blanco será el separador por defecto.
1
2
3
4
5
6
7
8
9
10
archivo=open("taller.txt")#Por defecto lo abre en modo lectura y modo textocontenido=archivo.read()#La función read() devuelve el contenido de la listaarchivo.close()#Siempre se debe cerrar el archivoprint("Texto como cadena de caracteres")print(contenido)#Mostramos en pantalla el contenido#Convertimos el contenido a una listaprint("\nConvertido en lista quedaría:")contenido=contenido.split()#Como no indicamos separador toma por defecto al espacio en blanco " "print(contenido)print("El índice 4 es la palabra:",contenido[4])#Ya podemos trabajar como una lista clásica
1
2
3
4
5
6
7
8
9
10
11
# Leer convertir en lista a un archivo separado por comasarchivo=open("comas.txt")#Por defecto lo abre en modo lectura y modo textocontenido=archivo.read()#La función read() devuelve el contenido de la listaarchivo.close()#Siempre se debe cerrar el archivoprint("Texto como cadena de caracteres")print(contenido)#Mostramos en pantalla el contenido#Convertimos el contenido a una listaprint("\nConvertido en lista quedaría:")contenido=contenido.split(",")#Indicamos el separador ","print(contenido)print("El índice 4 es la palabra:",contenido[4])#Ya podemos trabajar como una lista clásica
Escribir un archivo
Para escribir un archivo debemos indicarle a la función open() entre dos opciones posible: escribir o añadir.
Para escribir usamos “w”, recordar que si el archivo existe lo sobrescribe, para agregar contenido usamos “a”.
1
2
3
4
5
6
7
8
archivo=open("demostracion.txt","w")#Abrimos un archivo para escritura, si no existe lo crea, si existe sobreescribearchivo.write("Escribo algún contenido")#La función write escribe el contenido en un archivoarchivo.close()#Siempre se debe cerrar el archivo#Leemos el archivoarchivo=open("demostracion.txt")print(archivo.read())archivo.close()#Siempre se debe cerrar el archivo
Crear un archivo vacío
El parámetro “x” permite crear un archivo vacío, siempre que no exista, si existe genera una excepción.
1
2
archivo=open("vacio.txt","x")#Creamos un archivo vacío, si existe genera una excepciónarchivo.close()
Añadir información en un archivo
Para añadir información a un archivo usamos el parámetro “a”. Si no existe lo crea y añade, si existe solo añade.
1
2
3
archivo=open("vacio.txt","a")#Creamos un archivo vacío, si existe genera una excepciónarchivo.write("Contenido\n")#\n indica que el próximo contenido que agreguemos será puesto en un nuevo renglónarchivo.close()
Buenas prácticas al manejar archivos
Resulta conveniente al manejar archivos hacer uso del manejo de errores y excepciones. De esta forma estaremos realizando una buena práctica de programación.
1
2
3
4
5
try:#intentamos abrir un archivo para lecturaarchivo=open("miarchivo.txt")print(f.read())finally:#Siempre va a cerrar el archivo, independientemente de si se generó o no una excepciónarchivo.close()
Otra opción es trabajar con la palabra reservada with. Esta palabra nos permite crear una variable temporal (en el ejemplo a continuación es la variable archivo) que solo puede ser accedida dentro del bloque. with automáticamente cierra el archivo ocurran o no excepciones.
1
2
withopen("miarchivo.txt")asarchivo:#Creamos una variable temporal archivocontenido=archivo.read()#Volcamos el contenido del archivo en la variable contenido