Lectura y Escritura de Archivos de Texto
Trabajar con archivos de texto es una de las tareas más comunes. Python nos permite leer su contenido o escribir nueva información en ellos.
Abriendo un archivo
Para empezar a trabajar con un archivo, primero debemos abrirlo. Esto se hace con la función open().
# 'file_name.txt': nombre del archivo
# 'mode': modo de apertura
# 'encoding': codificación del archivo (comúnmente 'utf-8')
file = open('file_name.txt', 'mode', encoding='utf-8')
Los modos de apertura más comunes son:
-
'r' (read - lectura): Abre el archivo solo para leerlo. El puntero se coloca al principio del archivo. Si el archivo no existe, lanza un error FileNotFoundError.
-
'w' (write - escritura): Abre el archivo para escribir. Si el archivo ya existe, su contenido se truncará (se borrará todo). Si no existe, se crea uno nuevo.
-
'a' (append - añadir): Abre el archivo para añadir contenido. El puntero se coloca al final del archivo. Si el archivo no existe, se crea uno nuevo.
-
'x' (exclusive creation - creación exclusiva): Crea un archivo nuevo y lo abre para escritura. Si el archivo ya existe, lanza un error FileExistsError.
-
'b' (binary - binario): Abre el archivo en modo binario. Se usa en combinación con los modos anteriores (ej. 'rb', 'wb').
-
't' (text - texto): Abre el archivo en modo texto (por defecto). Se usa en combinación con los modos anteriores (ej. 'rt', 'wt').
Cerrando un archivo
Es crucial cerrar un archivo después de terminar de usarlo para liberar los recursos del sistema y asegurar que todos los cambios se guarden.
file.close()
El método with (context manager)
La mejor práctica para manejar archivos es usar la declaración with. Esto asegura que el archivo se cierre automáticamente, incluso si ocurren errores.
# Writing to a text file
with open('my_notes.txt', 'w', encoding='utf-8') as f:
f.write("Hello, this is my first note.\n")
f.write("Python file handling is awesome!\n")
# Reading from a text file
with open('my_notes.txt', 'r', encoding='utf-8') as f:
content = f.read() # Reads the entire content
print("Full content:")
print(content)
print("-" * 30)
# Reading line by line
with open('my_notes.txt', 'r', encoding='utf-8') as f:
print("Reading line by line:")
for line in f:
print(line.strip()) # .strip() removes leading/trailing whitespace including newlines
print("-" * 30)
# Appending to a text file
with open('my_notes.txt', 'a', encoding='utf-8') as f:
f.write("This line was added later.\n")
with open('my_notes.txt', 'r', encoding='utf-8') as f:
updated_content = f.read()
print("Updated content after appending:")
print(updated_content)