Volver a Python Intermedio
Entrada/Salida de Archivos
Python hace que trabajar con archivos sea sencillo usando funciones integradas y gestores de contexto.
Leer Archivos
# Leer archivo completo
with open("datos.txt", "r", encoding="utf-8") as f:
contenido = f.read()
# Leer línea por línea (eficiente en memoria)
with open("datos.txt", "r") as f:
for linea in f:
print(linea.strip())
# Leer todas las líneas en una lista
with open("datos.txt", "r") as f:
lineas = f.readlines()
Escribir Archivos
# Escribir (sobreescribe el existente)
with open("salida.txt", "w", encoding="utf-8") as f:
f.write("¡Hola, Mundo!\n")
f.write("Segunda línea\n")
# Modo de adición (append)
with open("registro.txt", "a") as f:
f.write("Nueva entrada de registro\n")
# Escribir múltiples líneas
lineas = ["línea 1\n", "línea 2\n", "línea 3\n"]
with open("salida.txt", "w") as f:
f.writelines(lineas)
Trabajar con JSON
import json
# Escribir JSON
datos = {
"usuarios": [
{"id": 1, "nombre": "Alice", "activo": True},
{"id": 2, "nombre": "Bob", "activo": False},
]
}
with open("usuarios.json", "w") as f:
json.dump(datos, f, indent=2, ensure_ascii=False)
# Leer JSON
with open("usuarios.json", "r") as f:
cargado = json.load(f)
print(cargado["usuarios"][0]["nombre"]) # Alice
Trabajar con CSV
import csv
# Escribir CSV
filas = [["Nombre", "Edad", "Ciudad"],
["Alice", 30, "Ciudad de México"],
["Bob", 25, "Madrid"]]
with open("personas.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerows(filas)
# Leer CSV como diccionarios
with open("personas.csv", "r", encoding="utf-8") as f:
lector = csv.DictReader(f)
for fila in lector:
print(fila["Nombre"], fila["Edad"])
Pathlib (Rutas de Archivo Modernas)
from pathlib import Path
# Crear rutas
base = Path("datos")
config = base / "config" / "ajustes.json"
# Verificar existencia
if config.exists():
contenido = config.read_text()
# Crear directorios
config.parent.mkdir(parents=True, exist_ok=True)
# Escribir/Leer texto
config.write_text('{"debug": true}', encoding="utf-8")
texto = config.read_text(encoding="utf-8")
# Listar archivos
for p in Path("src").glob("**/*.py"):
print(p)
# Información del archivo
print(config.name) # ajustes.json
print(config.stem) # ajustes
print(config.suffix) # .json
print(config.parent) # datos/config
Archivos Temporales
import tempfile
import os
with tempfile.NamedTemporaryFile(mode="w", suffix=".txt", delete=False) as tmp:
tmp.write("Datos temporales")
ruta_tmp = tmp.name
# Usar ruta_tmp...
os.unlink(ruta_tmp) # Limpieza
Siempre usa
with(gestor de contexto) para operaciones con archivos — garantiza que el archivo se cierre incluso si ocurre una excepción.