Вы можете сделать свой класс форматирования для форматирования аргументов в зависимости от того, как вы хотите. Это не совсем прямолинейно, но вот тот, который дает следующий вывод (при условии, что @mgilson верен в предположении, что вы хотите отображать метавар только один раз для набора имен команд... В противном случае просто укажите фактический metavar='value'
и он будет отображать именно этот текст.):
# without metavar specified:
-c, --chunksize CHUNKSIZE
chunk size in bits
# with metavar specified:
-c, --chunksize some_metavar
chunk size in bits
И код для класса и воспроизводящий два вывода:
import argparse
# 2.7-3.2
class SingleMetavarHelpFormatter(argparse.HelpFormatter):
def _format_action_invocation(self, action):
if not action.option_strings:
metavar, = self._metavar_formatter(action, action.dest)(1)
return metavar
else:
parts = []
# if the Optional doesn't take a value, format is:
# -s, --long
if action.nargs == 0:
parts.extend(action.option_strings)
# if the Optional takes a value, format is:
# -s ARGS, --long ARGS
else:
default = action.dest.upper()
args_string = self._format_args(action, default)
## THIS IS THE PART REPLACED
#~ for option_string in action.option_strings:
#~ parts.append('%s %s' % (option_string, args_string)) ### this is change
## /SECTION REPLACED
## NEW CODE:
parts.extend(action.option_strings)
parts[-1] += ' %s' % args_string
## /NEW CODE
return ', '.join(parts)
parser = argparse.ArgumentParser(
prog='PROG',
formatter_class=SingleMetavarHelpFormatter
)
parser.add_argument('-c', '--chunksize', type=int, help='no metavar specified')
parser.add_argument('-w', '--with_metavar', type=int, help='metavar specified', metavar='some_metavar')
parser.print_help()
изменить: чтобы вообще не отображать метапеременную, вы можете передать пустую строку в метапеременную:
parser.add_argument('-e', '--with_empty_metavar', type=int, help='empty metavar specified', metavar='')
Разница между выполнением этого с исходным классом и новым классом заключается в отсутствии дополнительного символа пробела после синтаксиса короткой команды.
#usage: PROG [-h] [-c CHUNKSIZE] [-w some_metavar] [-e]
#
#optional arguments:
# -h, --help show this help message and exit
# -c CHUNKSIZE, --chunksize CHUNKSIZE
# no metavar specified
# -w some_metavar, --with_metavar some_metavar
# metavar specified
# -e, --with_empty_metavar
# empty metavar specified
person
Nisan.H
schedule
06.06.2013
argparse.SUPPRESS
может помочь, но, видимо, нет... - person mgilson   schedule 06.06.2013-c chunksize, --chunksize chunksize
вместо-c CHUNKSIZE, --chunkesize CHUNKSIZE
? Тогда это сделаетmetavar = ('chunksize')
. Никакой линии помощи вообще по этому аргументу?help=argparse.SUPPRESS
- person Nisan.H   schedule 06.06.2013-c, --chunksize ______ chunksize in bits
- person mgilson   schedule 06.06.2013