Manejo de archivos
Como vimos anteriormente, Python puede integrarse muy bien con nuestro sistema operativo y podemos manipular de manera directa sobre los comandos de nuestro sistema, lo que nos permitiría la manipulación de archivos de manera indirecta. Ahora vamos a ver como manipular archivos de manera más directa.
- Lo primero que debemos hacer es crear una variable que contenga la ruta absoluta del archivo, es decir, donde este se encuentra localizado junto con su nombre:
path = '/home/[usuario]/archivo.txt'
- Ahora se continúa “abriendo” el archivo desde Python. Esto se consigue con la función open, ingresándole los parametros de path (la ruta absoluta del archivo o la variable que creamos anteriormente) y lo que deseamos hacer con el archivo, es decir, el modo:
mi_archivo = open (path, 'r')
Existen seis acciones disponibles para un archivo, r, w, a, r+, w+ y a+.
Modo | Nombre | Descripción |
---|---|---|
r | read (leer) | Es el modo de sólo lectura y también por defecto. |
w | write (escribir) | En caso de no existir el archivo, creará uno nuevo o sobreescribirá el archivo existente. |
a | append (anexar) | Escribirá los datos al final del archivos, el cual debe existir para utilizar este modo. |
r+ | read/write (leer/escribir) | Como su nombre lo indica, abre el archivo en modo de lectura y escritura, y el puntero se posicionará en la primera línea del archivo. |
w+ | read/write (leer/escribir) | Hace exactamente lo mismo que r+, con la diferencia de que si el archivo no existe, lo crea. También sobreescribirá la información que el archivo ya contenía en caso de existir. |
a+ | read/write (leer/escribir) | Este modo también creará el archivo si no existe, pero si existe, en lugar de sobreescribirlo, añadirá los datos nuevos al final del archivo. |
- Una vez abierto, podemos proceder a leer la información que contiene, gracias al método .read():
print (mi_archivo.read())
- Cuando ya hayamos terminado de manipular el documento, deberemos cerrarlo para evitar que sufra modificaciones indeseadas en caso de que nuestro programa contenga más manipulaciones de archivos posteriores a ese segmento del código:
mi_archivo.close()
- Podemos leer línea por línea con el método .readline()
path = '/home/[usuario]/archivo.txt'
mi_archivo = open (path, 'r')
print (mi_archivo.readline())
mi_archivo.close()
- Si utilizamos la función .readlines(), cada línea del documento puede ser almacenada en una lista, como un elemento individual:
path = '/home/[usuario]/archivo.txt'
mi_archivo = open (path, 'r')
lista1 = mi_archivo.readlines()
print(lista1)
mi_archivo.close()
- Ahora vamos a aplicar un breve ejemplo del modo w:
path = '/home/[usuario]/archivo.txt'
mi_archivo = open (path, 'w')
mi_archivo.write ("Probando la escritura de archivos.")
mi_archivo.close()
mi_archivo2 = open (path, 'r')
print (mi_archivo2.read())
mi_archivo2.close()
Algo muy importante para aclarar y que van a usar constantemente, es el formato de las cadenas string.
En la lección 5 vimos como al aplicar el formato, podemos insertar el valor de variables en medio de cadenas de string y así no tener que modificar dicha cadena, cada vez que un valor cambie.
path = '/home/[usuario]/archivo.txt'
variable1 = input ("Ingrese un número: ")
mi_archivo = open (path, 'w')
mi_archivo.write(f"El número ingresado es: {variable1}")
mi_archivo.close()
mi_archivo2 = open (path, 'r')
print (mi_archivo2.readline())
mi_archivo2.close()
- Para finalizar, vamos a ejemplificar cómo funciona el modo a (append):
path = '/home/[usuario]/archivo.txt'
mi_archivo = open (path, 'a')
mi_archivo.write("\nAñadiendo líneas al archivo.")
mi_archivo.close()
mi_archivo2 = open (path, 'r')
lista1 = mi_archivo2.readlines()
print (lista1)
mi_archivo2.close()
Si ejecutamos ese último script múltiples veces, veremos cómo en cada ocasión, una línea nueva se añadirá al final del archivo.