Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python argparse store_true and store optional option in one argument [duplicate]

I need to recognise if was given argument alone or with optional string or neither

parser.add_argument(???)
options = parser.parse_args()

so

./prog.py --arg

should store '' into options.arg,

./prog.py --arg=lol

stores 'lol' into options.arg and

./prog.py

left options.arg as None

now I have:

parser.add_argument("--arg", nargs="?",type=str,dest="arg")

but when I run myprogram as ./prog.py --arg options.arg remains None. Only way to recognise --arg was given is run it as ./prog.py --arg= and this is problem for me.

like image 755
Matthew.J Avatar asked Aug 30 '26 09:08

Matthew.J


1 Answers

Use the const keyword:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--arg", nargs="?", type=str, dest="arg", const="")
print(parser.parse_args([]))
print(parser.parse_args(['--arg']))
print(parser.parse_args(['--arg=lol']))

results in

Namespace(arg=None)
Namespace(arg='')
Namespace(arg='lol')

Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!