Quiero usar argparse para crear una herramienta con subcomando. La sintaxis posible podría sersubmandato python argparse con dependencia y conflicto
/tool.py descarga --de 1234 --interval 60
descarga /tool.py --build 1432
/tool.py --numbers limpias 10
así que quiero utilizar para implementar argparse:
- garantizar '--de' y '--interval' son una iempre usan juntos
- asegurar '--build' no se usa nunca con otros argumentos
Pero no he encontrado una manera de emparejar '--de' y '--internal' a un grupo, a continuación, hacer que el grupo sea exclusivo en mutuo con '--build'.
A continuación se muestra mi código actual, y solo hace que '- from' y '--build' sean mutuamente exclusivos. Tampoco garantice que '- from' y '--interval' se unan, ni tampoco garantice que '--interval' y '--build' sean mutuamente exclusivos.
parser = argparse.ArgumentParser(description='A Tool')
subparsers = parser.add_subparsers(help='sub-command help')
#create the parser for the 'download' command
download_parser = subparsers.add_parser('download', help='download help')
download_parser.add_argument('--interval', dest='interval', type=int,help='interval help')
group = download_parser.add_mutually_exclusive_group()
group.add_argument('--from',type=int, help='from help')
group.add_argument('--build', type=int, help='interval help')
Por ejemplo,
descarga /tool.py --de 1234
No se debe permitir porque '--de' debe trabajar con '--interval'. Pero mi código lo acepta en silencio.
Y
/tool.py descarga --interval 1234 --build 5678
No se debe permitir porque '--build' no se puede utilizar con otro argumento. Pero mi código también lo acepta.
Cualquier sugerencia será muy apreciada. Gracias.
tiene código allí, pero ¿qué no está funcionando? Dé un ejemplo del comportamiento incorrecto y explique cómo lo espera. –
Agregué 2 ejemplos de comportamientos incorrectos. Gracias por tu sugerencia. – Landy