Python-Argparse bedingt erforderlichen Argumente

Habe ich getan, so viel Forschung wie möglich, aber ich habe nicht gefunden, der beste Weg, um sicherzustellen, cmdline Argumente notwendig nur unter bestimmten Bedingungen, in diesem Fall nur, wenn andere Argumente gegeben haben. Hier ist, was ich tun möchte, in einem sehr grundlegenden level:

p = argparse.ArgumentParser(description='...')
p.add_argument('--argument', required=False)
p.add_argument('-a', required=False) # only required if --argument is given
p.add_argument('-b', required=False) # only required if --argument is given

Aus, was ich gesehen habe, andere Leute scheinen einfach nur Ihre eigene Kontrolle am Ende:

if args.argument and (args.a is None or args.b is None):
    # raise argparse error here

Gibt es eine Möglichkeit, dies direkt in der argparse-Paket?

  • Haben Sie sah argparse subparsers? Sie werden Ihnen erlauben, Dinge zu tun, wie $ git commit <commit args only> oder $ git merge <merge args only>.
  • Joel, danke für den Kommentar. Ich habe gesehen, das subparser Aspekt des argparse, aber ich hatte gehofft, dies zu tun, ohne positionale Argumente. Wenn das der einzige Weg, wenn es nicht eine große Sache
  • Kann --a und --b gegeben werden, unabhängig?
InformationsquelleAutor DJMcCarthy12 | 2014-09-02
Schreibe einen Kommentar