Это, похоже, реализует основную идею дополнительного подпарамера. Мы разбираем стандартные аргументы, применимые ко всем подкомандам. Затем, если что-то осталось, мы вызываем парсер на остальных. Основными аргументами являются родительский элемент подкоманды, поэтому -h отображается правильно. Я планирую ввести интерактивное приглашение, если нет подкоманд.
import argparse
p1 = argparse.ArgumentParser( add_help = False )
p1.add_argument( ‘–flag1′ )
p2 = argparse.ArgumentParser( parents = [ p1 ] )
s = p2.add_subparsers()
p = s.add_parser( ‘group’ )
p.set_defaults( group=True )
( init_ns, remaining ) = p1.parse_known_args( )
if remaining:
p2.parse_args( args = remaining, namespace=init_ns )
else:
print( ‘Enter interactive loop’ )
print( init_ns )