Lectura y Escritura de Archivos
Almacenar y recuperar datos desde archivos en el disco duro (u otros medios de almacenamiento) es una habilidad fundamental. Si solo usas variables, todos tus datos desaparecerán en cuanto el programa finalice.
La Función open()
La función integrada open() es la clave para manejar archivos de texto en Python. Toma dos parámetros clave: el nombre del archivo y el "modo" (el propósito de la apertura).
Modos Principales
"r"(Read / Leer): Modo por defecto. Abre un archivo para lectura. Provoca un error si el archivo no existe."w"(Write / Escribir): Abre un archivo para escritura. ¡CUIDADO! Si el archivo ya existe, lo sobrescribirá (borrando su contenido anterior). Si no existe, lo creará."a"(Append / Añadir al final): Abre un archivo para escritura, pero en lugar de borrar el contenido anterior, empieza a escribir al final del archivo. Lo crea si no existe.
Escribiendo en un Archivo (w y a)
# MODO 'w': Abriendo (o creando) el archivo para escritura
archivo = open("mi_diario.txt", "w")
archivo.write("Este es el primer registro de mi diario.\n")
# ¡SIEMPRE CIERRA EL ARCHIVO CUANDO TERMINES!
archivo.close()
# MODO 'a': Añadiendo una nueva línea sin borrar la anterior
archivo = open("mi_diario.txt", "a")
archivo.write("Esta es mi segunda anotación.\n")
archivo.close()
Leyendo de un Archivo (r)
archivo = open("mi_diario.txt", "r")
# .read() lee todo el archivo de golpe
contenido = archivo.read()
print("CONTENIDO COMPLETO:")
print(contenido)
archivo.close()
La Forma "Segura" (El bloque with)
¿Qué pasa si ocurre un error y tu programa se estrella antes de llegar al archivo.close()? El archivo podría quedar corrupto en la memoria o ser inaccesible por otros programas.
La mejor práctica (recomendada por Python) es usar el bloque with. Este mecanismo mágico se encarga de llamar a .close() automáticamente cuando terminas de usar el archivo, incluso si ocurre un error.
# Con 'with', no necesitas preocuparte por .close()
with open("mi_diario.txt", "r") as archivo:
# Leer línea por línea
for linea in archivo:
print(f"Línea leída: {linea.strip()}")