Объяснение поведения модуля argparse python: откуда берутся заполнители для заглавных букв?

Я пытаюсь написать интерфейс командной строки (впервые), и, прочитав о argparse, optparse и getopt, я выбрал argparse из-за нескольких рекомендаций здесь, в SO, и в других местах в сети. Немного адаптировав совет г-на ван Россума, я подключил первый интерфейс командной строки выглядит следующим образом:

def main(argv=None):
    if argv is None:
        argv = sys.argv
    desc = u'some description'
    parser = argparse.ArgumentParser(description=desc)

    parser.add_argument('-s', '--search', help='Search for someone.')
    parser.add_argument('-c', '--do_something_else', help='Do something else.')

    args = parser.parse_args()
    print args

if __name__ == '__main__':
    sys.exit(main())

Выполнение python myscript.py -h приводит к:

usage: dblp.py [-h] [-s SEARCH] [-c DO_SOMETHING_ELSE]

some description

optional arguments:
  -h, --help            show this help message and exit
  -s SEARCH, --search SEARCH
                        Search for someone.
  -c DO_SOMETHING_ELSE, --do_something_else DO_SOMETHING_ELSE
                        Do something else.

Итак, мой первый вопрос: Почему SEARCH и DO_SOMETHING_ELSE пишутся ЗАГЛАВНЫМИ БУКВАМИ? Второй вопрос: нарушаю ли я какие-либо стандарты? Есть ли лучший способ (или хороший пример из реальной жизни, на котором я могу поучиться) создания понятных и полезных интерфейсов командной строки с помощью Python? И есть ли подводные камни, которых следует избегать , при написании cmd интерфейсов?


person Aufwind    schedule 18.07.2011    source источник


Ответы (2)


Вот пара основных ресурсов argparse, которые я откопал:

Некоторые слайды на argparse: http://www.slideshare.net/tisto/argparse-python-command-line-parser

Небольшой пример argparse: http://www.rutherfurd.net/tag/argparse/

Вот реальный пример argparse: https://github.com/harijay/xtaltools/blob/e683fcef6a5ad7394b87382e58d4dce32a85585b/maskconvert.py

Чтобы избежать ловушек, вот красивая оболочка для argparse, позволяющая сократить шаблонный код, который вам нужно написать для некоторых распространенных случаев использования: http://travelingfrontiers.wordpress.com/2010/11/03/simple-python-argparse-wrapper/

person agf    schedule 18.07.2011

Элементы с заглавными буквами — это просто заполнители значений; они взяты из пункта назначения опции. Вы можете указать альтернативные заполнители с помощью параметра metavar= для add_argument:

http://docs.python.org/dev/library/argparse.html#metavar

person Amber    schedule 18.07.2011