python, argparse: enable input parameter when another one has been specified

前端 未结 3 1591
悲&欢浪女
悲&欢浪女 2021-01-04 08:34

In my python script, I want to be able to use an optional input parameter only when another optional parameter has been specified. Example:

$ python         


        
3条回答
  •  滥情空心
    2021-01-04 08:59

    You can use parse_known_args() to check if --parameter1 was given before adding --parameter2 to the parser.

    import argparse
    
    parser = argparse.ArgumentParser()
    parser.add_argument('--parameter1', dest='p1')
    args = parser.parse_known_args()[0]
    if args.p1:
      parser.add_argument('--parameter2', dest='p2')
    args = parser.parse_args()
    
    if args.p1:
      print args.p1
    if args.p2:
      print args.p2
    

    Results:

    $ python myScript.py --parameter1 a
    a
    $ python myScript.py --parameter1 a --parameter2 b
    a
    b
    $ python myScript.py --parameter2 b
    usage: myScript.py [-h] [--parameter1 P1]
    myScript.py: error: unrecognized arguments: --parameter2 b
    

提交回复
热议问题