Estoy buscando una clase de contenedor de biblioteca para envolver un comando de Unix en una clase de Python (posiblemente para una mayor presentación del comando en la web). Idealmente, las opciones de comando se presentan en la cadena de documentación de mi clase envuelta, y la biblioteca extrae automáticamente (o mediante llamadas a métodos) los argumentos opcionales y requeridos. ¿Has visto u oído hablar de una biblioteca de este tipo ?
Digamos que quiero envolver un conjunto de comandos en una clase de Python dedicada, posiblemente para una presentación adicional en una página web que nuevamente podría presentar las diferentes opciones disponibles para el comando. ¿Existe ya una biblioteca así?
Aquí hay una explicación adicional sobre lo que me gustaría de la biblioteca, si existe, basada en un comando algo simplista helloworld
, con el siguiente uso:
helloworld [-t <text>] [-n <num>] -U -U uppercase the output text -t <text> text to display, defaults to [Hello world] -n <num> Number of repeats
Para envolver este comando, me gustaría escribir una clase de Python similar a la siguiente:
class HelloWorld(CommandWrapper):
"""Wrapper around helloworld command.
Options:
use_uppercase -U Uppercase the output text [false]
text -t <text> Text to display [Hello World]
repeats -n <num> Number of repeats [1]
"""
def __init__(self, *args):
self.build_options(__doc__, 'helloworld', args)
Ahora esto podría usarse de la siguiente manera:
all_defaults = HelloWorld()
with_args = HelloWorld(number=4, "Cool")
print("Command with all defaults: {}".format(all_defaults))
print("Command with arguments: {}".format(with_args))
que imprimiría lo siguiente
Comando con todos los valores predeterminados: helloworld
Comando con argumentos: helloworld -n 4 -t Cool
Opcionalmente , esta clase contenedora de biblioteca también proporcionaría algunos elementos/listas/dictados para usar en una página web donde era posible obtener el nombre del comando y las diversas opciones disponibles (posiblemente con opciones predeterminadas). Con base en esta información, se podría crear un formulario donde fuera posible agregar opciones y elegir valores adecuados para las opciones agregadas.
Quizás pruebe el módulo 'sh'
pip install sh
Le permite llamar a los comandos como si fueran funciones de python
from sh import ifconfig print ifconfig("eth0")
Al leer detenidamente la pregunta, deduzco que está buscando presentarle al usuario las opciones que son válidas o que podrían agregarse a un comando específico más que cualquier otra cosa, por lo que sugeriría como punto de partida, ExplainShell .
El objetivo de la shell de explicación es analizar las páginas del manual para determinar cuáles son los posibles argumentos y explicar una línea de comando dada haciendo coincidir cada argumento con el texto de ayuda relevante en la página del manual.
La versión actual de ExplainShell incluye un comparador para analizar una línea de comando determinada y presentar al usuario el texto de ayuda relevante, mientras que necesitaría un constructor para agregar opciones, con argumentos válidos, desde una interfaz de usuario.
Nathaniel M. Castor
Juan Y.
hola