/cli

cli - Módulo Python para interfaces de línea de comando.

Primary LanguagePython

cli - Módulo Python para interfaces de línea de comando

El módulo cli (de Command Line Interface) es un conjunto de funciones y clases escritas en Python para la creación de interfaces de usuario basadas en línea de comandos con autocompletado y menús de opciones con captura de teclas.

Este módulo es compatible con las versiones 2.7.x y 3.3.x de Python, y aunque fue desarrollado y probado en plataforma GNU/Linux, se ha previsto su uso en plataforma Windows, y probablemente funcione sin problemas en este sistema operativo.

La documentación completa del módulo cli está disponible en:

http://czayas.gitbooks.io/cli/

Para usar el módulo, basta con colocar el archivo cli.py en la misma carpeta que el programa que va a importarlo.

El siguiente listado de código pretende ser un muestrario de la funcionalidad principal del módulo:

from cli import *

# Limpiar la pantalla:
clear()

# Reemplazo de print para compatibilidad entre Python 2 y 3:
out('Presione dos veces TAB para obtener una lista de opciones.\n')

# Línea de comandos con autocompletado:
opciones = ['start', 'stop', 'list', 'print']
salir = opciones[1]  # El comando 'stop' se usará para salir del ciclo
p = Prompt(opciones, salir).ciclo()

# Ciclo REPL (Read, Eval, Print, Loop):
l = ''  # Línea introducida por el usuario
while l != salir:
    l = next(p)
    # A partir de aquí se procesa la línea:
    if l:
        out('Recibido: {}\n'.format(l))

# Para crear un menú, se usa un diccionario de funciones:
opciones = {
    'a': ['Opción A', funcion_a],
    'b': ['Opción B', funcion_b],
    'c': ['Opción C', funcion_c]
}

# Este tipo de menú utiliza un "prompt" (indicador de ingreso):
opcion = Menu(opciones).pedir()
if opcion:
    opcion()  # Se ejecuta la función elegida

# Esta variante sólo requiere de la pulsación de una tecla:
opcion = Menu(opciones).pedir('', True)  # (mensaje, tecla)
opcion()  # Se ejecuta la función elegida

Una manera rápida de experimentar lo que ofrece este módulo es ejecutando el archivo cli.py, lo que iniciará una demostración equivalente al listado anterior.

Se ha intentado hacer de cliun módulo util, práctico, multiversión y multiplataforma. Se recibirá con agrado cualquier comentario o sugerencia.