When I run parsePlotSens.py -s bw hehe, it says that hehe is an unrecognized argument. However, if I run parsePlotSens.py hehe -s bw, it's OK. Ideally, I would like it work for both cases.
Any tips? The following is my code:
if __name__ == '__main__' : parser = argparse.ArgumentParser(prog='parsePlotSens'); parser.add_argument('-s', '--sort', nargs =1, action = 'store', choices = ['mcs', 'bw'], default='mcs', help=sorthelp) parser.add_argument('filename', nargs ='+', action = 'store') option = parser.parse_args(sys.argv)
Do not pass sys.argv as an argument to parse_args. Just use
option = parser.parse_args() If you do pass sys.argv to parse_args, then the path or name of the script itself is the first item in sys.argv and thus becomes the value of option.filename. The hehe then becomes an unknown argument.
If you omit sys.argv then parse_args parses sys.argv as expected.
You can get around this by allowing unknown arguments
Replace
args = parser.parse_args() with
args, unknown = parser.parse_known_args()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With