Ficheros
1. Qué son los ficheros? #
Un fichero (o archivo) es un lugar en tu sistema donde puedes almacenar datos, como texto, imágenes, o cualquier otro tipo de información. En Python, puedes leer y escribir ficheros de texto y binarios de manera sencilla utilizando las funciones integradas del lenguaje.
2. Operaciones comunes con ficheros en Python #
Las operaciones más comunes con ficheros en Python son:
- Abrir un fichero.
- Leer el contenido de un fichero.
- Escribir en un fichero.
- Cerrar el fichero.
3. Abrir un fichero #
Para abrir un fichero en Python, usas la función open(). Esta función requiere el nombre del fichero y el modo en el que quieres abrirlo.
Los modos más comunes son:
"r": Leer (read) el fichero. Da un error si el fichero no existe."w": Escribir (write) en el fichero. Crea un fichero nuevo si no existe o sobrescribe el existente."a": Añadir (append) al final del fichero. Crea un fichero nuevo si no existe.
4. Leer un fichero #
Puedes leer el contenido de un fichero usando los métodos read(), readline(), o readlines().
Ejemplo: Leer un fichero #
1# Abrir el fichero en modo lectura 2fichero = open("ejemplo.txt", "r") 3 4# Leer todo el contenido del fichero 5contenido = fichero.read() 6print("Contenido del fichero:") 7print(contenido) 8 9# Cerrar el fichero 10fichero.close()
- ¿Qué hace este código?:
- Abre un fichero llamado
ejemplo.txten modo lectura ("r"). - Lee todo el contenido del fichero y lo imprime.
- Cierra el fichero.
- Abre un fichero llamado
- Resultado en pantalla:
Contenido del fichero: Aquí está el texto de ejemplo.
5. Escribir en un fichero #
Para escribir en un fichero, puedes usar el método write().
Ejemplo: Escribir en un fichero #
1# Abrir el fichero en modo escritura 2fichero = open("nuevo_fichero.txt", "w") 3 4# Escribir texto en el fichero 5fichero.write("Este es un nuevo fichero.\n") 6fichero.write("Aquí se escribe algo de texto.\n") 7 8# Cerrar el fichero 9fichero.close() 10 11# Comprobar el contenido escribiéndolo en pantalla 12fichero = open("nuevo_fichero.txt", "r") 13contenido = fichero.read() 14print("Contenido del nuevo fichero:") 15print(contenido) 16fichero.close()
- ¿Qué hace este código?:
- Crea y abre un fichero llamado
nuevo_fichero.txten modo escritura ("w"). - Escribe dos líneas de texto en el fichero.
- Cierra el fichero.
- Luego, abre el fichero en modo lectura para mostrar su contenido.
- Crea y abre un fichero llamado
- Resultado en pantalla:
Contenido del nuevo fichero: Este es un nuevo fichero. Aquí se escribe algo de texto.
6. Cerrar un fichero con gestores de contexto (with) #
Es fundamental cerrar los ficheros tras utilizarlos para liberar los recursos y descriptores del sistema operativo. La mejor práctica en Python es usar la sentencia with, que asegura el cierre automático del archivo incluso si se produce una excepción:
Ejemplo: Uso idiomático de with #
1# Escritura segura con with 2with open("otro_fichero.txt", "w", encoding="utf-8") as fichero: 3 fichero.write("Este fichero se cerrará automáticamente.") 4 5# Lectura segura con with 6with open("otro_fichero.txt", "r", encoding="utf-8") as fichero: 7 contenido = fichero.read() 8 print(contenido)
7. Manejo moderno de ficheros con pathlib (Python 3.4+) #
El módulo estándar pathlib proporciona una interfaz orientada a objetos para trabajar con rutas del sistema de archivos de forma limpia, multiplataforma y segura, reemplazando muchas funciones antiguas de os y os.path.
Ventajas de pathlib.Path: #
- Sintaxis intuitiva usando el operador
/para componer rutas. - Métodos directos
.read_text(),.write_text(),.read_bytes(),.write_bytes()sin necesidad de abrir y cerrar manualmente. - Comprobaciones directas de existencia (
.exists()), tipo (.is_file(),.is_dir()) y creación de directorios (.mkdir(parents=True, exist_ok=True)).
Ejemplo con pathlib: #
1from pathlib import Path 2 3# Crear y componer rutas 4directorio = Path("datos") 5directorio.mkdir(exist_ok=True) 6 7archivo = directorio / "usuarios.txt" 8 9# Escribir texto directamente 10archivo.write_text("Ana,25\nCarlos,30\nBeatriz,28", encoding="utf-8") 11 12# Verificar existencia y leer 13if archivo.exists(): 14 contenido = archivo.read_text(encoding="utf-8") 15 print("Contenido leído con pathlib:") 16 print(contenido) 17 18# Obtener metadatos de la ruta 19print(f"Nombre del archivo: {archivo.name}") 20print(f"Extensión: {archivo.suffix}") 21print(f"Directorio padre: {archivo.parent}")
8. ¿Por qué trabajar con ficheros? #
- Almacenamiento persistente: Los datos en disco sobreviven al cierre del programa.
- Intercambio de datos: Intercambio de formatos estructurados (TXT, CSV, JSON).
- Registro de actividad (Logs): Almacenamiento de auditoría y trazas de ejecución.
Resumen del tema
Conceptos clave #
- Apertura tradicional (
open+with):- Modos principales:
'r'(lectura),'w'(sobrescritura/creación),'a'(añadido),'b'(binario). - Parámetro de codificación: especificar siempre
encoding="utf-8". - Gestor de contexto
with open(...) as f:para cierre determinista de recursos.
- Modos principales:
- Manejo moderno orientado a objetos con
pathlib.Path:- Composición multiplataforma con
/(ej.Path('carpeta') / 'archivo.txt'). - Métodos rápidos:
.read_text(),.write_text(),.read_bytes(),.write_bytes(). - Métodos de inspección:
.exists(),.is_file(),.is_dir(),.glob("*.txt").
- Composición multiplataforma con
Qué debes recordar #
Utiliza siempre gestores de contexto with open() para operaciones secuenciales y pathlib.Path para gestión de rutas y lecturas/escrituras directas orientadas a objetos.