argparse - option with optional value

Ben Finney ben+python at benfinney.id.au
Fri May 18 21:59:14 EDT 2012


Ben Finney <ben+python at benfinney.id.au> writes:
> Miki Tebeka <miki.tebeka at gmail.com> writes:
> > The way I'm doing it currently is:
> > ...
> > no_edit = 'no-edit'
> > parser.add_argument('-e', '--edit', help='open editor on log', nargs='?',
> > default=no_edit)
>> There is a built-in “no value specified” value in Python: the None
> singleton. The ‘argparse’ library uses this for the argument default
> already, so you don't need to fuss with your own special handling
> <URL:http://docs.python.org/library/argparse.html#default>.

Miki Tebeka <miki.tebeka at gmail.com> writes:
> The problem with this approach is that in both cases of not specifying
> -e and with -e with no argument the value of args.edit is None.

Okay. Then instead of a string, which has a chance of being used as the
actual value, I recommend you instead, make a guaranteed-unique sentinel
value::
 NO_EDITOR = object()
 parser.add_argument(
 '-e', '--edit', help='open editor on log', nargs='?',
 default=NO_EDITOR)
 # …
 if args.edit is not NO_EDITOR:
 # start the editor
-- 
 \ “I am too firm in my consciousness of the marvelous to be ever |
 `\ fascinated by the mere supernatural …” —Joseph Conrad, _The |
_o__) Shadow-Line_ |
Ben Finney


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /