0Pricing
Python Academy · Lección

Subcomandos y opciones

Construya CLI complejas

Subcomandos y opciones es una lección gratuita de Python Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Python Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Python Academy incluye 4 lecciones en total.

¿Por qué usar subcomandos?

Herramientas como git tienen subcomandos: git add, git commit. argparse permite hacerlo mediante subparsers, donde cada subcomando tiene sus propios argumentos.

import argparse

parser = argparse.ArgumentParser(prog='tool')
sub = parser.add_subparsers(dest='command')
print('subparsers ready')

Añadir subparsers

add_subparsers devuelve un objeto cuyo método add_parser crea cada subcomando. dest almacena cuál se ha elegido.

import argparse

parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='command')
sub.add_parser('start')
sub.add_parser('stop')
args = parser.parse_args(['start'])
print('command:', args.command)

Argumentos propios de cada subcomando

Cada subparser puede definir sus propios argumentos. El subcomando add de este ejemplo recibe un nombre; list no recibe ninguno.

import argparse

parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='command')
p_add = sub.add_parser('add')
p_add.add_argument('name')
sub.add_parser('list')
args = parser.parse_args(['add', 'milk'])
print(args.command, args.name)

Distribuir según el comando

Después de analizar los argumentos, use args.command para ejecutar la lógica adecuada.

import argparse

parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='command')
p_add = sub.add_parser('add')
p_add.add_argument('item')
sub.add_parser('clear')

args = parser.parse_args(['add', 'eggs'])
if args.command == 'add':
    print('adding', args.item)
elif args.command == 'clear':
    print('clearing all')

set_defaults para los controladores

Un patrón claro consiste en asociar una función a cada subparser con set_defaults(func=...) y después llamar a args.func(args).

import argparse

def do_hi(args):
    print('hi', args.who)

parser = argparse.ArgumentParser()
sub = parser.add_subparsers()
p = sub.add_parser('hi')
p.add_argument('who')
p.set_defaults(func=do_hi)

args = parser.parse_args(['hi', 'Ana'])
args.func(args)

Opciones compartidas mediante analizadores padre

Un analizador padre contiene las opciones comunes a varios subcomandos, lo que evita repetirlas. Pase parents=[base] y add_help=False.

import argparse

base = argparse.ArgumentParser(add_help=False)
base.add_argument('--verbose', action='store_true')

parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='cmd')
sub.add_parser('run', parents=[base])
args = parser.parse_args(['run', '--verbose'])
print(args.cmd, args.verbose)

Valores predeterminados por opción

Las opciones de los subcomandos pueden tener sus propios valores predeterminados y tipos, igual que los argumentos del nivel superior.

import argparse

parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='cmd')
p = sub.add_parser('scale')
p.add_argument('--factor', type=float, default=1.0)
args = parser.parse_args(['scale'])
print('factor:', args.factor)

Añadir opciones repetidas

action='append' permite proporcionar una opción varias veces y reúne cada valor en una lista.

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--tag', action='append', default=[])
args = parser.parse_args(['--tag', 'a', '--tag', 'b'])
print(args.tag)

Contar opciones

action='count' cuenta cuántas veces aparece una opción, el patrón clásico de verbosidad -vvv.

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-v', action='count', default=0)
args = parser.parse_args(['-v', '-v', '-v'])
print('verbosity level:', args.v)

Una herramienta con dos comandos

Al combinar subcomandos, controladores y opciones compartidas se obtiene una CLI estructurada con varios comandos.

import argparse

def add(args):
    print('add', args.item, 'qty', args.qty)

def remove(args):
    print('remove', args.item)

parser = argparse.ArgumentParser()
sub = parser.add_subparsers()
pa = sub.add_parser('add')
pa.add_argument('item')
pa.add_argument('--qty', type=int, default=1)
pa.set_defaults(func=add)
pr = sub.add_parser('remove')
pr.add_argument('item')
pr.set_defaults(func=remove)

args = parser.parse_args(['add', 'pen', '--qty', '3'])
args.func(args)

Subcomando obligatorio

Establezca required=True en los subparsers para que el usuario tenga que elegir un comando; de lo contrario, argparse generará un error.

import argparse

parser = argparse.ArgumentParser()
sub = parser.add_subparsers(dest='cmd', required=True)
sub.add_parser('go')
args = parser.parse_args(['go'])
print('chosen:', args.cmd)

Comprobación rápida

Compruebe cuánto ha entendido de los subcomandos y las opciones.

Resumen

Ha aprendido sobre subcomandos y opciones:

  • add_subparsers y add_parser permiten crear herramientas con varios comandos.
  • set_defaults(func=...) distribuye la ejecución entre los controladores.
  • Los analizadores padre comparten opciones comunes.
  • Las acciones append y count gestionan opciones repetidas.

Siguiente tema: la biblioteca Click para crear CLI basadas en decoradores.

Preguntas frecuentes

¿La lección «Subcomandos y opciones» es gratis?

Sí — el texto completo de «Subcomandos y opciones» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Python Academy, actualiza a CoddyKit PRO. El curso de Python Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Subcomandos y opciones»?

Construya CLI complejas Practicas Python Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Python Academy?

No se requiere experiencia previa. Python Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Subcomandos y opciones»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Python Academy?

Sí. Cada lección de Python Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Conceptos básicos de argparse
  2. Subcomandos y opciones
  3. La biblioteca Click
  4. Salida enriquecida del terminal
← Volver a Python Academy