Python Para Principiantes (VIII) - Manejo de Archivos

Manejo de archivos

Índice

Introducción

Python nos permite leer y escribir archivos.

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 texto
contenido = archivo.read() #La función read devuelve el contenido del archivo.
archivo.close() #Siempre se debe cerrar el archivo
print(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 texto
contenido = archivo.read(5) #La función read(5) devuelve los primeros cinco caracteres
archivo.close() #Siempre se debe cerrar el archivo
print(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 texto
contenido = archivo.readline() #La función readline devuelve el primer renglón del archivo.
archivo.close() #Siempre se debe cerrar el archivo
print(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 texto
contenido = 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 pantalla
archivo.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 texto
for x in archivo:
    print(x) #x va a ser igual al contenido de cada renglón
archivo.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 texto
contenido = archivo.read() #La función read() devuelve el contenido de la lista
archivo.close() #Siempre se debe cerrar el archivo
print("Texto como cadena de caracteres")
print(contenido) #Mostramos en pantalla el contenido
#Convertimos el contenido a una lista
print("\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 comas
archivo = open("comas.txt") #Por defecto lo abre en modo lectura y modo texto
contenido = archivo.read() #La función read() devuelve el contenido de la lista
archivo.close() #Siempre se debe cerrar el archivo
print("Texto como cadena de caracteres")
print(contenido) #Mostramos en pantalla el contenido
#Convertimos el contenido a una lista
print("\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 sobreescribe
archivo.write("Escribo algún contenido") #La función write escribe el contenido en un archivo
archivo.close() #Siempre se debe cerrar el archivo

#Leemos el archivo
archivo = 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ón
archivo.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ón
archivo.write("Contenido\n") #\n indica que el próximo contenido que agreguemos será puesto en un nuevo renglón
archivo.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 lectura
   archivo = open("miarchivo.txt")
   print(f.read())
finally: #Siempre va a cerrar el archivo, independientemente de si se generó o no una excepción
   archivo.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
with open("miarchivo.txt") as archivo: #Creamos una variable temporal archivo
    contenido = archivo.read() #Volcamos el contenido del archivo en la variable contenido
updatedupdated2021-02-032021-02-03