PYTHON – DÍA 6

Librerías esenciales: os, sys, subprocess, json


1. Objetivo del día

Aprender a usar las librerías estándar más importantes para automatización:

  • os → interacción con el sistema
  • sys → argumentos y estado del intérprete
  • subprocess → ejecutar comandos del sistema
  • json → leer y escribir datos estructurados

Con ellas podrás hacer scripts reales de administración, monitorización y DevOps.


2. Teoría esencial (5–10 minutos)

2.1. Módulo os

Permite trabajar con:

  • rutas y directorios
  • variables de entorno
  • listar archivos
  • obtener información del sistema

Ejemplos:

import os

print(os.getcwd())           # directorio actual
print(os.listdir())          # lista de archivos
print(os.getenv("HOME"))     # variable de entorno

2.2. Módulo sys

Controla la interacción con Python:

import sys

print(sys.argv)   # argumentos del script
print(sys.version)

El primer argumento (sys.argv[1]) lo usamos en el Día 1.


2.3. Módulo subprocess

Permite ejecutar comandos del sistema desde Python.

Ejemplo básico:

import subprocess

resultado = subprocess.run(["ls", "-l"])

Guardar salida:

salida = subprocess.check_output(["whoami"])
print(salida.decode())

2.4. Módulo json

Muy útil para:

  • APIs
  • logs estructurados
  • configuraciones
  • integraciones

Convertir diccionario → JSON:

import json

data = {"nombre": "server1", "ip": "10.0.0.5"}

json_texto = json.dumps(data, indent=4)
print(json_texto)

Leer JSON → diccionario:

obj = json.loads(json_texto)
print(obj["ip"])

3. Práctica guiada (aprox. 50 minutos)

3.1. Trabajar con rutas y ficheros (os)

Crear archivo:

nano rutas_os.py

Contenido:

import os

print("Directorio actual:", os.getcwd())
print("Archivos en este directorio:")

for nombre in os.listdir():
    print("-", nombre)

print("Variable de entorno HOME:", os.getenv("HOME"))

Ejecuta y observa.


3.2. Usar sys.argv para argumentos avanzados

nano argumentos.py

Contenido:

import sys

if len(sys.argv) < 2:
    print("Uso: python3 argumentos.py <nombre>")
    sys.exit()

nombre = sys.argv[1]
print("Hola,", nombre)

Ejecuta:

python3 argumentos.py Tomas

3.3. Ejecutar comandos del sistema (subprocess)

nano ejecutar_comando.py

Contenido:

import subprocess

print("Ejecutando 'whoami'...")

salida = subprocess.check_output(["whoami"])
print("Usuario actual:", salida.decode().strip())

Prueba también:

  • ["ls", "-l"] en Linux/Mac
  • ["dir"] en Windows (necesitarás shell=True)

3.4. Ejecutar comandos con errores controlados

nano comando_seguro.py

Contenido:

import subprocess

try:
    salida = subprocess.check_output(["ls", "/directorio_inexistente"])
    print(salida.decode())
except subprocess.CalledProcessError as e:
    print("Error al ejecutar el comando.")
    print("Código de retorno:", e.returncode)

3.5. Trabajar con JSON (guardar)

Crear:

nano guardar_json.py

Contenido:

import json

servidor = {
    "nombre": "web01",
    "ip": "192.168.1.10",
    "estado": "activo"
}

with open("servidor.json", "w") as f:
    json.dump(servidor, f, indent=4)

print("Archivo JSON creado.")

3.6. Leer JSON (cargar)

nano leer_json.py

Contenido:

import json

with open("servidor.json", "r") as f:
    datos = json.load(f)

print("Información del servidor:")
print("Nombre:", datos["nombre"])
print("IP:", datos["ip"])
print("Estado:", datos["estado"])

3.7. Ejemplo profesional: ejecutar un comando y guardar salida en JSON

nano cmd_a_json.py

Contenido:

import subprocess
import json

# Ejecutar comando
salida = subprocess.check_output(["whoami"]).decode().strip()

# Crear objeto JSON
info = {
    "usuario_actual": salida
}

# Guardar en fichero
with open("info.json", "w") as f:
    json.dump(info, f, indent=4)

print("Información guardada en info.json")

4. Checklist del Día 6

  • Has usado os para rutas y variables
  • Has manejado argumentos con sys
  • Has ejecutado comandos con subprocess
  • Has controlado errores de comandos
  • Has creado y leído archivos JSON
  • Has combinado subprocess + JSON

Si todo está marcado, estás a nivel profesional básico.


5. Errores frecuentes

ProblemaSolución
Error “FileNotFoundError” con subprocessComando mal escrito o ruta no válida
Salida en bytes en lugar de textoUsar .decode()
JSON mal formateadoRevisar comas y llaves
Problemas al abrir JSONArchivo vacío o corrupto
KeyError al acceder a valoresVerifica nombres exactos de claves

6. Ejercicio opcional (con solución aparte)

Crear un script estado_sistema.py que:

  1. Ejecute el comando
    • Linux/Mac: uptime
    • Windows: systeminfo (solo un fragmento, por ejemplo el nombre del host)
  2. Convierta parte de la salida en un diccionario
  3. Guarde el resultado en estado.json
  4. Muestre en pantalla:
Estado guardado en estado.json

La solución estará en:
Soluciones propuestas


7. Día 6 completado

Has aprendido a conectar Python con el sistema operativo, ejecutar comandos, manejar JSON y usar las librerías básicas de automatización profesional.

En el Día 7, haremos un proyecto final real, donde combinarás todo lo aprendido en un script de nivel “sysadmin básico”.

Ìndice Curso PythonAnterior Día 5Siguiente Día 7

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies