Manipulación de Información en Python

 

10. Manipulación de Información y POO

📁 1. Manejo de Archivos (Persistencia)

Hasta ahora, los datos se borraban al cerrar el programa. Con open(), los guardamos en el disco duro.

  • Modos principales: 'r' (lectura), 'w' (escritura, borra lo anterior), 'a' (añadir al final).

  • La sentencia with: Es la forma profesional de abrir archivos. Se asegura de cerrar el archivo automáticamente incluso si el script falla. Evita que los archivos se corrompan.

    • Ejemplo: with open("logs.txt", "r") as f:

📊 2. Formatos de Intercambio (CSV y JSON)

En administración de sistemas, casi nunca leerás un .txt plano, sino formatos estructurados:

  • CSV (Comma Separated Values): Ideal para hojas de cálculo e inventarios de equipos. Se usa la librería csv.

  • JSON (JavaScript Object Notation): El estándar para APIs y archivos de configuración (como los de VS Code). Se usa la librería json.

🏗️ 3. Programación Orientada a Objetos (POO)

La POO permite modelar elementos del mundo real (un PC, un Router, un Usuario) como "objetos" de código.

  • Clase: Es el "plano" o plantilla (ej: El diseño de un modelo de Portátil).

  • Objeto / Instancia: El aparato físico real creado a partir del plano.

  • Atributos: Las características (IP, Marca, Almacenamiento).

  • Métodos: Las acciones que puede hacer (encender, reiniciar, formatear).

🧬 4. Herencia y Polimorfismo

  • Herencia: Crear una clase "Hija" que hereda todo de la "Padre".

    • Ejemplo: Una clase Dispositivo (Padre) y una clase Impresora (Hija). La impresora hereda el atributo IP, pero añade el atributo tinta.

  • Polimorfismo: La capacidad de que diferentes clases tengan un método con el mismo nombre pero que se comporten distinto.

    • Ejemplo: El método configurar() hará cosas distintas si el objeto es un Router o un Switch.


💡 Ejemplo aplicado: Modelando un Servidor

Python
class Servidor:
    def __init__(self, nombre, ip):
        self.nombre = nombre  # Atributo
        self.ip = ip

    def hacer_ping(self):     # Método
        print(f"Haciendo ping a {self.nombre} en la IP {self.ip}...")

# Crear una instancia (Objeto)
mi_web = Servidor("Web_Principal", "192.168.1.50")
mi_web.hacer_ping()

🛠️ Actividad práctica

  1. El Log de Eventos (Archivos):

    • Crea un script que pida al usuario una incidencia técnica.

    • Guárdala en un archivo llamado incidencias.txt usando with open(...) y el modo 'a'.

    • Cada incidencia debe guardarse en una línea nueva.

  2. Exportador de Inventario (JSON):

    • Crea un diccionario con los datos de tu PC (CPU, RAM, Disco).

    • Usa la librería json para guardar ese diccionario en un archivo llamado mi_pc.json.

    • Abre el archivo con el Bloc de Notas para comprobar que se ha guardado correctamente.

  3. Jerarquía de Red (POO):

    • Define una clase padre Equipo con el atributo hostname.

    • Crea una clase hija Servidor que herede de Equipo y añada el atributo puerto.

    • Crea una clase hija PC_Usuario que herede de Equipo y añada el atributo usuario_actual.

    • Instancia un objeto de cada clase e imprime sus datos.