2017-01-26 64 views
0

考慮下面的簡單程序。是否可以判斷用戶是否使用docopt設置了一個選項?

from docopt import docopt 

doc = """ 
Usage: ./opt.py [options] 

    -h,--help   show this 
    -a <option>  generic option [default: Foo] 
""" 

options = docopt(doc) 
print options['-a'] 
print options 

是否有可能在我的程序中區分以下兩個用戶調用?

python Opt.py -a Foo 
python Opt.py 

回答

2

如果您定義默認值,則無法區分。但是,您可以從docstring中刪除默認值並以編程方式進行設置。

from docopt import docopt 

doc = """ 
Usage: ./opt.py [options] 

    -h,--help   show this 
    -a <option>  generic option 
""" 

options = docopt(doc) 
if options['-a']: 
    # option was defined 
    ... 
else: 
    # option was not defined 
    options['-a'] = "Foo" 
    ... 

但無論如何,對於哪些用例將永遠是必要的?

相關問題