2017-06-09 5 views
0

docoptのドキュメントと例を見てもわかりませんが、この機能があるはずですが、存在するはずなので、私は確かめるように頼んだと思います。docoptから任意のオプションを受け入れる

私はPython用のdocoptを使用しており、任意のオプションを許可できるようにしたいと考えています。ユースケースは、コマンドラインテンプレートユーティリティです。そのため、任意のキー値が便利です。

"""Templator 

Usage: 
    templator <template> [--arbitrary-option=<value>]... 
""" 

希望の例は私が後にしています。たぶん--*=<value>のようなものが、それを書く別の方法になるでしょう。

編集:

ここに、キー値のペアをとる私の現在の解決策があります。しかし、これらはスペースで区切られているので、長いステートメントのキーと値が何かを理解するのは難しいかもしれません。

templator <template> (<key> <value>)...

その後(このソリューションに興味がある人のための)Pythonスクリプト

arguments = docopt(__doc_) 
arbitrary_kwargs = dict(zip(arguments['<key>'], arguments['<value>'])) 

key=value構文を持つことは理想的である - それが可能かどう。

答えて

0

おそらく、あなたはdocopt/examples/git/git.pyが何をするかである

"""Templator 

Usage: 
    templator <template> [-c <name>=<value>]... 
""" 

を使用することができます。ここで

は、試験例です:

bash-3.2$ cat test.py 
""" Usage: 
    Templator [-c <name>=<value>]... 
""" 
import sys, docopt 
args = docopt.docopt(__doc__, version='0.0.1-alpha') 
print str(args) 

bash-3.2$ python test.py 
{'-c': 0, 
'<name>=<value>': []} 

bash-3.2$ python test.py -c foo=1 
{'-c': 1, 
'<name>=<value>': ['foo=1']} 

bash-3.2$ python test.py -c foo=1 -c baz=2 
{'-c': 2, 
'<name>=<value>': ['foo=1', 'baz=2']} 
関連する問題