Entrada/Salida de Archivos en Python: Dominando Operaciones de Lectura, Escritura y Gestión
Entrada/Salida de Archivos en Python
Aprende a abrir, leer, escribir y cerrar archivos en Python con ejemplos claros y técnicas de mejores prácticas.
Video: Lectura y Escritura de Archivos en Python
Archivos
Los archivos son ubicaciones nombradas en disco que almacenan datos persistentemente. Como la RAM es volátil, confiamos en archivos para mantener información entre ejecuciones de programas.
Al interactuar con un archivo, la secuencia típica es: abrir → leer/escribir → cerrar.
Abrir Archivos en Python
La función integrada open() de Python devuelve un objeto archivo que puedes usar para operaciones de E/S. La firma de la función es:
open(archivo, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
Puntos clave:
modecontrola la operación:r(lectura),w(escritura, trunca),a(añadir),x(crear exclusivamente).t(texto) es el default;b(binario) devuelve objetosbytes.+permite lectura y escritura simultáneas.- Siempre especifica
encodingal tratar texto para evitar defaults dependientes de plataforma (ej.cp1252en Windows,utf-8en Linux).
| Modo | Descripción |
|---|---|
r | Lectura (default) |
w | Escritura; crea nuevo o trunca existente |
x | Creación exclusiva; falla si archivo existe |
a | Añadir; crea si no existe |
t | Modo texto (default) |
b | Modo binario |
+ | Lectura y escritura |
f = open("test.txt") # r/rt
f = open("test.txt", "w") # escritura
f = open("img.bmp", "r+b") # lectura/escritura binario
Como a es un carácter, no equivale al número 97 a menos que se codifique. Establece explícitamente encoding='utf-8' para archivos de texto.
f = open("test.txt", mode='r', encoding='utf-8')
Cerrar Archivos en Python
Cerrar correctamente un archivo libera recursos del sistema. El método close() es directo, pero usar un gestor de contexto es el patrón más seguro.
with open("test.txt", encoding='utf-8') as f:
# realizar operaciones de archivo
pass
El gestor de contexto garantiza el cierre incluso si ocurre una excepción. Si abres un archivo manualmente, envuélvelo en un bloque try...finally.
try:
f = open("test.txt", encoding='utf-8')
# operaciones
finally:
f.close()
Escribir en Archivos en Python
Usa modo w, a o x para escribir. w sobrescribe contenido existente; a lo preserva.
El método write() acepta una cadena (o bytes para binario) y devuelve el número de caracteres escritos.
with open("test.txt", "w", encoding='utf-8') as f:
f.write("mi primer archivo\n")
f.write("Este archivo\n\n")
f.write("contiene tres líneas\n")
Recuerda incluir caracteres de nueva línea para separar líneas.
Leer Archivos en Python
Abre con modo r. El método read() acepta un argumento opcional size; omitirlo lee hasta EOF.
f = open("test.txt", "r", encoding='utf-8')
print(f.read(4)) # 'Este'
print(f.read(4)) # ' es '
print(f.read()) # contenido restante
f.close()
Mueve el cursor con seek() y consulta su posición con tell():
print(f.tell()) # posición actual
f.seek(0) # rebobinar
print(f.read()) # leer todo
Itera sobre líneas eficientemente:
for line in f:
print(line, end='')
Alternativamente, readline() y readlines() proporcionan acceso línea por línea.
Métodos de Archivo en Python
Referencia concisa de los métodos de archivo más comunes en modo texto.
| Método | Descripción |
|---|---|
| close() | Cierra el archivo. |
| detach() | Desconecta el buffer binario subyacente. |
| fileno() | Devuelve el descriptor de archivo. |
| flush() | Vacía el buffer de escritura. |
| isatty() | Verifica si el stream es interactivo. |
| read(n) | Lee hasta n caracteres; None lee hasta EOF. |
| readable() | ¿Es el stream legible? |
| readline(n=-1) | Lee una línea, hasta n caracteres. |
| readlines(n=-1) | Devuelve lista de líneas, hasta n caracteres. |
| seek(offset, from_=SEEK_SET) | Mueve cursor a offset desde from_ (inicio, actual, fin). |
| seekable() | ¿Soporta el stream acceso aleatorio? |
| tell() | Obtiene posición actual del cursor. |
| truncate(size=None) | Redimensiona archivo a size bytes. |
| writable() | ¿Es el stream escribible? |
| write(s) | Escribe cadena s; devuelve caracteres escritos. |
| writelines(lines) | Escribe un iterable de cadenas. |
python
- Dominando la entrada/salida en C: scanf() y printf() explicados
- Dominando E/S de archivos en C: Crear, abrir y gestionar archivos
- Entrada/Salida de archivos en C#: Lectura, escritura y gestión de streams
- Dominando tipos de datos en Python: Guía práctica
- Dominando operadores en Python: Guía completa
- Operaciones con Listas en Python: Creación, Acceso, Modificación y Técnicas Avanzadas
- Dominando Diccionarios en Python: Creación, Manipulación y Técnicas Avanzadas
- Entrada/Salida de Archivos en Python: Dominando Operaciones de Lectura, Escritura y Gestión
- Comprobación de existencia de archivos y directorios en Python – Guía práctica
- Python JSON: Codificación, decodificación y manejo de archivos – Guía práctica
- Entrada/Salida de Archivos en Python: Domina las Operaciones I/O