Cómo implementar operaciones CRUD un archivo externo
Autor
Vanessa ReteguínHasta el momento todas nuestras variables han sido locales por ejecución. Es decir, si a = 5, la variable va a existir única y exclusivamente cuando corramos el programa; en el momento en el que se termina/detiene su ejecución, se libera el espacio en memoria reservado para almacenar su valor. Entonces, ¿cómo guardamos, por ejemplo, el puntaje record de un jugador? ¿Cómo almacenamos datos? Más adelante estudiaremos cómo almacenar datos en una base de datos relacional, pero por el momento aprenderemos cómo guardar nuestra información en archivos de texto.
¿Qué es CRUD?
La administración de archivos se basa en cuatro operaciones básicas:
C: Create Crear
R: Read Leer
U: Update Actualizar
D: Delete Eliminar
En python trabajamos con la función open(), la cual toma dos parámetros: filename (nombre del archivo) y mode (modo).
Existen cuatro métodos (modos) para abrir un archivo:
"r"ReadValor por default, sólo puedes leer su contenido. Muestra error si el archivo no existe.
"a"AppendAgrega contenido al archivo (al final). Crea el archivo si no existe.
"w"WriteEscribe (sobre-escribe) el archivo. Crea el archivo si no existe.
"x"CreateCrear el archivo. Muestra error si el archivo no existe.
¿Cómo abrir/leer un archivo?
open("test.txt")
"r"ReadValor por default, sólo puedes leer su contenido. Muestra error si el archivo no existe.
Primero crea un archivo con extensión .txt (texto plano).
En PyCharm
- En la parte superior del IDE, abajo de la barra de herramientas busca un símbolo de “+”.
- Sa click y selecciona “Nuevo archivo o directorio”.
- Crea “test.txt”
En la consola
- Ingresa hasta el directorio deseado. Ej:
cd Desktop - Crea y escribe el contenido del contenido con nano:
nano test.txt - Corrobora que se haya guardado tu archivo correctamente. Ejemplo:
“May the force be with you”
Abrir el archivo
file = open("test.txt") contents = file.read() print(contents) file.close()May the force be with you
file.close()
Si queremos no tener que preocuparnos por esto, es conveniente emplear la sentencia with
with open("test.txt") as file:
contents = file.read()
print(contents)
FileNotFoundError: En caso de que no se encuentre el archivo (nombre/ruta incorrecta), podemos manejar este error con las sentencias try y except
try:
with open("test2.txt") as file: # Wrong file name on purpose
contents = file.read()
print(contents)
except FileNotFoundError:
print("You misspelt the file's name or is in another location")
¿Cómo escribir sobre un archivo?
Sobre-escribir un archivo
"w"WriteEscribe (sobre-escribe) el archivo. Crea el archivo si no existe.
with open("test.txt", mode="w") as file:
file.write("New text")
test.txt
New text
Agregar contenido un archivo
"a"AppendAgrega contenido al archivo (al final). Crea el archivo si no existe.
Agregar contenido al FINAL del archivo
** Agregamos un salto de línea (\n) para diferenciar el nuevo contenido. De lo contrario agregará contenido seguido del último carácter.
with open("test.txt", mode="a") as file:
file.write("\nNew text.")
test.txt
May the force be with you
New text.
Crear un nuevo archivo
"x"CreateCrear el archivo. Muestra error si el archivo no existe.
with open("new_file.txt", mode="x") as file:
file.write("New text.")
new_file.txt
New text.
Rutas relativas vs absolutas
Ruta absoluta: Todos los directorios por los cuales debemos pasar desde el directorio raíz para llegar a nuestro archivo
Ej: /Users/vanessa/Desktop/test.txt
Ruta relativa: De acuerdo a dónde estoy, ¿hacia dónde me debo mover para llegar hacia el archivo?
Ej: /test.txt
Métodos importantes
.readlines()
Leer las múltiples lineas de un archivo
with open("TheKing.txt") as file:
verses = file.readlines()
for i in verses:
print(i)
The King
Song by Sarah Kinsley ‧ 2021
[...]
I'm your king
I wanna be the king
.strip(characters)
Eliminar caracteres de una cadena
word = ",,..banana..,,.."
x = word.strip(",.")
print(x)
banana
.split(separator)
Separar elementos de una cadena y generar una lista con ellos
groceries = "milk, soap, bananas, toilet paper, shampoo, rice"
items = groceries.split(", ")
print(items)
['milk', 'soap', 'bananas', 'toilet paper', 'shampoo', 'rice']
.replace(oldvalue, newvalue)
Remplazar caracteres de una cadena
txt = "__________Batman"
x = txt.replace("_", f"na ")
print(x)
na na na na na na na na na na Batman
Actividad
SoluciónAutomatiza la creación de invitaciones para una fiesta
-
Crea el archivo
starting_letter.txty redacta una invitación para una fiesta (ej: tu fiesta de cumpleaños). Agrega [name] en el lugar del nombre. Ejemplo:Hola [name]! Te invito a mi fiesta este sábado! Espero que puedas venir :D Atte. Cardui -
Crea una lista de invitados en
invited_names.txt. EjemploAang Zuko Appa Katara Sokka Momo Iroh Toph - Remplaza [name] con cada nombre del otro archivo.
-
Guarda cada archivo como letter_to_name.txt en otra carpeta
Ejemplo:
example.txt
Hola Aang! Te invito a mi fiesta este sábado! Espero que puedas venir :D Atte. Cardui