简体   繁体   中英

Argparse not recognizing arguments

I am having some trouble with argparse. My goal is to have the user select one and only one option (-a, -b, -c, etc.) and then the arguments for that option. I'm using subparsers to do this:

parser_iq = subparsers.add_parser('iq', help='iq help')
parser_iq.add_argument("-iq", "--index_query", nargs="+", action=required_length(1,6),type=organize_args, help="Choose an index to query for. Start-date, end-date,  "\
           "csv, json, stdout are all optional")

This is just one of the subparsers I plan to have.

Problem : When running this in the command line:

python3.6 main.py iq "index_name_here"

I get the error that "index_name_here" is unrecognized. I am parsing it like this:

args = parser.parse_args()

I found some problems similar to mine, but they were passing in sys.argv into parse_args(), which was their issue.

How can I make it so that argparse will recognize the arguments passed? Also, is there a way to have only one option passed in at a time? For example:

Correct:

main.py option1 arg1 arg2

Wrong:

main.py option1 option2 arg1 arg2

Thank you!

You have to pass the value like python3.6 main.py -iq "index_name_here" (ie, use -iq , not iq ).

As far as making mutually exclusive arguments, subparsers is, from what I understand, the way to go, but I can't give much in the way of guidance on how to proceed on that.

Edit:

In response to your comment, does the following work:

python3.6 main.py iq -iq "index_name_here"

?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM