0

--a --b --c の 3 つの引数があり、コマンドで少なくともそれらの 1 つを受け入れたいのですが、a/b/c のすべての組み合わせも有効です。例えば:

command.py --a
command.py --a --b
command.py --a --b --c
...

ただし、引数がないわけではありません:

command.py

ありがとう!

4

1 に答える 1

1

コマンドで少なくともそれらの 1 つを受け入れるようにしたい

次のことができます。

>>> from docopt import docopt
>>> u = '''usage: command.py --a [--b --c]
...               command.py --b [--a --c]
...               command.py --c [--a --b]'''
>>> docopt(u, ['--a'])
{'--a': True,
 '--b': False,
 '--c': False}
>>> docopt(u, ['--b'])
{'--a': False,
 '--b': True,
 '--c': False}
>>> docopt(u, ['--c'])
{'--a': False,
 '--b': False,
 '--c': True}
>>> docopt(u, [])
usage: command.py --a [--b --c]
       command.py --b [--a --c]
       command.py --c [--a --b]

これは、最も使いやすいコマンドライン インターフェイスではないかもしれませんが。おそらく、あなたのインターフェースをより詳細に説明していただければ、それを実装する方法についてアドバイスすることができます (オプションだけでなく、コマンドや位置引数も使用できる可能性があります)。

于 2013-03-27T09:33:14.167 に答える