2015-08-05 1 views
1

Я хочу сказать, что в python не использовать, например, '-a' переключатель с '-b'. Как я могу это сделать в python?Лучший юридический способ проверки аргументов с eachother в python

opts, args = getopt.getopt(sys.argv[1:], 'a:b:') 
for opt, arg in opts: 
    if opt == '-a': 
     after = str(arg) 
    elif opt == '-b': 
     before = int(arg) 

, например:

# python script.py -a aaa -b bbb 
    don't use -b arg with -a 
+4

[argparse] (http://pymotw.com/2/argparse/) делает жизнь легкой – Pynchia

+0

Что вы предлагаете? – MLSC

+0

Уважение PEP8, пожалуйста, у меня болят глаза. – KurzedMetal

ответ

0

насчет

mut_exc_opts = ['-a','-b'] 
opts_only = map(lambda (opt,arg): opt, opts) 
matches = [x for x in mut_exc_opts if x in opts_only] 
if len(matches) > 1: 
    print "do not use options", ', '.join(mut_exc_opts), "together" 

Он работает для любого количества вариантов и для любой комбинации параметров, которые должны быть взаимоисключающими.

Испытано на Python 2.7

Смежные вопросы