- Módulo time
Para gestionar el tiempo y fechas en Python, se emplea el módulo time. Permite trabajar con marcas de tiempo, retardos y formatos de fecha/hora.
# Obtención de la marca de tiempo actual
marca_actual = time.time()
print("Marca de tiempo actual:", marca_actual)
# Pausa de ejecución por un número específico de segundos
time.sleep(2) # Retraso de 2 segundos
# Convertir marca de tiempo a estructura de tiempo local
estructura_local = time.localtime(marca_actual)
print("Estructura de tiempo local:", estructura_local)
# Formatear estructura de tiempo como cadena
cadena_formateada = time.strftime("%Y-%m-%d %H:%M:%S", estructura_local)
print("Tiempo formateado:", cadena_formateada)
# Ejemplo adicional: Convertir cadena a marca de tiempo
cadena_fecha = "2023/10/15"
estructura = time.strptime(cadena_fecha, "%Y/%m/%d")
marca = time.mktime(estructura)
print("Marca de tiempo desde cadena:", marca)
- Módulo calendar
Este módulo ofrece funciones para análisis y visualización de calendarios, como determinar años bisiestos o generar calendarios mensuales.
# Verificar si un año es bisiesto
es_bisiesto = calendar.isleap(2024)
print("2024 es bisiesto:", es_bisiesto)
# Generar el calendario de un mes específico
calendario_mes = calendar.month(2023, 11)
print("Calendario de noviembre 2023:\n", calendario_mes)
# Obtener el día de la semana para una fecha
dia_semana = calendar.weekday(2023, 11, 15)
print("Día de la semana (0=lunes):", dia_semana)
- Módulo datetime
Proporciona clases para manipular fechas y horas de manera más intuitiva que el módulo time, facilitando operaciones como cálculos de intervalos.
import datetime
# Obtener la fecha y hora actual
ahora = datetime.datetime.now()
print("Fecha y hora actual:", ahora)
# Calcular una fecha en el futuro o pasado
futuro = ahora + datetime.timedelta(days=10)
print("Fecha en 10 días:", futuro)
# Reemplazar componentes de una fecha
nueva_fecha = ahora.replace(hour=15, minute=30)
print("Fecha modificada:", nueva_fecha)
# Convertir marca de tiempo a fecha
fecha_desde_marca = datetime.date.fromtimestamp(time.time())
print("Fecha desde marca de tiempo:", fecha_desde_marca)
- Módulo sys
Permite interactuar con el intérprete de Python y el sistema operativo, proporcionando acceso a argumentos de línea de comandos, rutas y configuraciones del entorno.
import sys
# Obtener argumentos de línea de comandos
argumentos = sys.argv
print("Argumentos del script:", argumentos)
# Salir del programa con un código de estado
sys.exit(0) # Salida normal
# Acceder a la versión de Python
version_python = sys.version
print("Versión de Python:", version_python)
# Rutas de búsqueda de módulos
rutas = sys.path
print("Rutas del sistema:", rutas)
- Módulo os
Facilita operaciones con el sistema de archivos y el entorno del sistema operativo, como crear directorios, manipular rutas y ejecutar comandos del sistema.
import os
# Crear un directorio
os.mkdir("nuevo_directorio")
# Listar archivos en un directorio
archivos = os.listdir(".")
print("Archivos en el directorio actual:", archivos)
# Obtener la ruta absoluta de un archivo
ruta_absoluta = os.path.abspath("archivo.txt")
print("Ruta absoluta:", ruta_absoluta)
# Comprobar si una ruta es un archivo o directorio
es_archivo = os.path.isfile("archivo.txt")
es_directorio = os.path.isdir("nuevo_directorio")
print("¿Es archivo?", es_archivo)
print("¿Es directorio?", es_directorio)
# Unir componentes de ruta
ruta_completa = os.path.join("carpeta", "subcarpeta", "archivo.log")
print("Ruta completa:", ruta_completa)
- Módulo random
Genera números pseudoaleatorios y selecciona elementos aleatorios de secuencias, útil para simulaciones, pruebas y juegos.
import random
# Generar un número flotante aleatorio entre 0 y 1
numero_aleatorio = random.random()
print("Número aleatorio (0-1):", numero_aleatorio)
# Generar un entero aleatorio dentro de un rango
entero_aleatorio = random.randint(1, 100)
print("Entero aleatorio (1-100):", entero_aleatorio)
# Seleccionar un elemento aleatorio de una lista
opciones = ["rojo", "verde", "azul"]
seleccion = random.choice(opciones)
print("Color seleccionado:", seleccion)
# Barajar una lista aleatoriamente
lista = [1, 2, 3, 4, 5]
random.shuffle(lista)
print("Lista barajada:", lista)
# Ejemplo: Generar código de verificación aleatorio
codigo = ""
for _ in range(6):
if random.random() > 0.5:
codigo += chr(random.randint(65, 90))
else:
codigo += str(random.randint(0, 9))
print("Código de verificación:", codigo)
- Módulo json
Permite la serialización y deserialización de datos en formato JSON, facilitando el intercambio de datos entre sistemas.
import json
# Diccionario de ejemplo para serializar
datos = {"nombre": "Ana", "edad": 30, "ciudad": "Madrid"}
# Serializar a cadena JSON
cadena_json = json.dumps(datos, indent=4)
print("Cadena JSON:\n", cadena_json)
# Deserializar desde cadena JSON
objeto = json.loads(cadena_json)
print("Objeto recuperado:", objeto)
# Escribir JSON a un archivo
with open("datos.json", "w") as archivo:
json.dump(datos, archivo, indent=4)
# Leer JSON desde un archivo
with open("datos.json", "r") as archivo:
datos_leidos = json.load(archivo)
print("Datos desde archivo:", datos_leidos)
- Módulo pickle
Realiza la serialización de objetos Python complejos a una representación de bytes, permitiendo su almacenamiento o transmisión.
import pickle
# Objeto Python para serializar
objeto_original = {"clave": [1, 2, 3], "valor": (4, 5)}
# Serializar a bytes
bytes_serializados = pickle.dumps(objeto_original)
print("Bytes serializados:", bytes_serializados[:100]) # Mostrar parcial
# Deserializar desde bytes
objeto_restaurado = pickle.loads(bytes_serializados)
print("Objeto restaurado:", objeto_restaurado)
# Guardar en archivo binario
with open("datos.pkl", "wb") as archivo:
pickle.dump(objeto_original, archivo)
# Cargar desde archivo binario
with open("datos.pkl", "rb") as archivo:
objeto_cargado = pickle.load(archivo)
print("Objeto cargado:", objeto_cargado)
- Módulo shutil
Proporciona operaciones de alto nivel para copiar, mover y eliminar archivos y directorios, incluyendo manejo de permisos.
import shutil
# Copiar un archivo
shutil.copy("origen.txt", "destino.txt")
# Copiar un directorio completo (recursivamente)
shutil.copytree("directorio_origen", "directorio_destino")
# Mover un archivo o directorio
shutil.move("archivo_antiguo.txt", "nueva_ubicacion/archivo.txt")
# Eliminar un directorio y todo su contenido
shutil.rmtree("directorio_a_eliminar")
# Crear un archivo comprimido (zip)
shutil.make_archive("backup", "zip", "directorio_datos")
- Módulo shelve
Ofrece una interfaz tipo diccionario para almacenar objetos Python en archivos, facilitando la persistencia de datos estructurados.
import shelve
# Abrir una base de datos shelve
with shelve.open("mi_base_datos") as db:
# Almacenar datos
db["usuario1"] = {"nombre": "Carlos", "activo": True}
db["usuario2"] = {"nombre": "María", "activo": False}
# Recuperar datos
usuario = db["usuario1"]
print("Datos del usuario1:", usuario)
# Actualizar datos
db["usuario1"]["activo"] = False
print("Usuario1 actualizado:", db["usuario1"])
- Módulo logging
Implementa un sistema flexible de registro de eventos, permitiendo controlar niveles de severidad y destinos de los mensajes.
import logging
# Configurar el registro básico
logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s - %(levelname)s - %(message)s"
)
# Registrar mensajes en diferentes niveles
logging.debug("Mensaje de depuración")
logging.info("Mensaje informativo")
logging.warning("Advertencia")
logging.error("Error")
logging.critical("Error crítico")
- Módulo hashlib
Proporciona funciones de hash criptográfico para generar resúmenes de datos, útil para verificar integridad y seguridad.
import hashlib
# Datos a hashear
datos = "ejemplo de texto".encode("utf-8")
# Calcular hash MD5
hash_md5 = hashlib.md5(datos).hexdigest()
print("Hash MD5:", hash_md5)
# Calcular hash SHA-256 con sal
hash_objeto = hashlib.sha256()
hash_objeto.update("sal".encode("utf-8"))
hash_objeto.update(datos)
hash_sha256 = hash_objeto.hexdigest()
print("Hash SHA-256 con sal:", hash_sha256)
- Módulo hmac
Genera códigos de autenticación de mensajes hash (HMAC) para verificar la integridad y autenticidad de datos.
import hmac
# Clave y mensaje
clave = "mi_clave_secreta".encode("utf-8")
mensaje = "datos_a_autenticar".encode("utf-8")
# Crear HMAC usando SHA-256
hmac_objeto = hmac.new(clave, mensaje, hashlib.sha256)
codigo_hmac = hmac_objeto.hexdigest()
print("Código HMAC:", codigo_hmac)
# Verificar HMAC
verificacion = hmac.new(clave, mensaje, hashlib.sha256).hexdigest()
es_valido = hmac.compare_digest(verificacion, codigo_hmac)
print("HMAC válido:", es_valido)
- Módulo configparser
Permite leer y escribir archivos de configuración en formato INI, facilitando la gestión de parámetros de aplicación.
import configparser
# Crear un parser de configuración
config = configparser.ConfigParser()
# Agregar secciones y opciones
config["servidor"] = {
"host": "localhost",
"puerto": "8080"
}
config["base_datos"] = {
"nombre": "mi_db",
"usuario": "admin"
}
# Escribir a un archivo
with open("config.ini", "w") as archivo:
config.write(archivo)
# Leer desde un archivo
config.read("config.ini")
host = config["servidor"]["host"]
print("Host del servidor:", host)
- Módulo subprocess
Permite ejecutar procesos externos y comandos del sistema, capturando su salida y código de retorno.
import subprocess
# Ejecutar un comando y capturar salida
resultado = subprocess.run(["ls", "-l"], capture_output=True, text=True)
print("Salida del comando:\n", resultado.stdout)
# Ejecutar comando en shell con tubería
proceso = subprocess.Popen(
["grep", "python"],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
text=True
)
salida, _ = proceso.communicate(input="ejemplo en python\notra línea")
print("Salida filtrada:", salida)
- Módulos xlrd y xlwt
Para leer y escribir archivos de Excel (formato .xls), respectivamente, permitiendo el procesamiento de hojas de cálculo.
import xlrd
# Leer un archivo Excel
libro = xlrd.open_workbook("datos.xlsx")
hoja = libro.sheet_by_index(0)
# Obtener valores de celdas
valor = hoja.cell_value(0, 0)
print("Valor en celda (0,0):", valor)
import xlwt
# Crear un archivo Excel
libro_escritura = xlwt.Workbook()
hoja_escritura = libro_escritura.add_sheet("NuevaHoja")
# Escribir datos
hoja_escritura.write(0, 0, "Encabezado1")
hoja_escritura.write(0, 1, "Encabezado2")
hoja_escritura.write(1, 0, "Dato1")
hoja_escritura.write(1, 1, "Dato2")
# Guardar el archivo
libro_escritura.save("nuevo_archivo.xls")
- Módulo xml
Facilita el análisis y manipulación de documentos XML, proporcionando un árbol de elementos para navegar y modificar la estructura.
import xml.etree.ElementTree as ET
# Analizar un archivo XML
arbol = ET.parse("ejemplo.xml")
raiz = arbol.getroot()
# Iterar sobre elementos
for elemento in raiz:
print("Etiqueta:", elemento.tag, "Atributos:", elemento.attrib)
# Buscar elementos específicos
elementos = raiz.findall(".//nombre_etiqueta")
for elem in elementos:
print("Texto:", elem.text)
# Modificar un elemento
for hijo in raiz:
if hijo.tag == "elemento_a_modificar":
hijo.text = "nuevo_valor"
# Guardar cambios
arbol.write("ejemplo_modificado.xml")
- Módulo re
Implementa operaciones con expresiones regulares para buscar, coincidir y transformar patrones en cadenas de texto.
import re
# Patrón de ejemplo
cadena = "Contacto: usuario@ejemplo.com, teléfono 123-456-7890"
# Buscar una dirección de correo electrónico
patron_email = r"[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+"
coincidencia = re.search(patron_email, cadena)
if coincidencia:
print("Email encontrado:", coincidencia.group())
# Reemplazar todos los números por asteriscos
cadena_limpia = re.sub(r"\d", "*", cadena)
print("Cadena con números ocultos:", cadena_limpia)
# Dividir la cadena por comas
partes = re.split(r",\s*", cadena)
print("Partes de la cadena:", partes)
# Validar un número de teléfono
telefono = "123-456-7890"
if re.match(r"^\d{3}-\d{3}-\d{4}$", telefono):
print("Formato de teléfono válido")