2012-10-30 57 views

回答

3

我認爲這是最簡單的parse_args()後,要做到這一點:

import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument('-b', action="store_true") 
parser.add_argument('-c', action="store_true") 
parser.add_argument('-d', action="store_true") 
parser.add_argument('-a', action="store_true") 
args = parser.parse_args() 
if args.a: args.b = args.c = args.d = True 

或者,你可以通過自定義操作做到這一點,但我認爲這是矯枉過正:

import argparse 
class AllAction(argparse.Action): 
    def __call__(self, parser, args, values, option_string = None): 
     # print '{n} {v} {o}'.format(n = args, v = values, o = option_string) 
     for param in ['a', 'b', 'c', 'd']: 
      setattr(args, param, True) 

parser = argparse.ArgumentParser() 
parser.add_argument('-b', action="store_true") 
parser.add_argument('-c', action="store_true") 
parser.add_argument('-d', action="store_true") 
parser.add_argument('-a', action = AllAction, nargs = '?') 
args = parser.parse_args() 
print(args) 
+0

是的,這是可能的解。我想也許有內置的方式來做到這一點。非常感謝。 – Antigluk

+0

+1。你寫了和我一樣的東西,但速度更快,並且有更完整的示例代碼...... – abarnert