Разбор параметров в модуле Python Cmd - PullRequest
2 голосов
/ 10 января 2011

Я пишу инструмент командной строки на Python, используя модуль Cmd.

Я хочу иметь возможность выдавать такие команды, как:

resize -file all -height 100 -width 200 -type jpeg

или

resize -file 'a file.jpg' -type png -height 50 -width 50

[править] Для ясности указанную выше команду необходимо ввести вмое приложение командной строки НЕ из терминала.Строка выше вызовет метод do_resize (self, line) моего модуля Cmd и передаст параметры в виде строки.По этой причине OptParse и argparse не делают то, что мне нужно, поскольку они, похоже, получают только параметры из sys.argv.

Некоторые параметры обязательны, некоторые являются необязательными.Некоторые становятся необходимыми, когда другие используются.

Каков наилучший способ анализа строки параметра? Я читал, что в Python есть инструменты, которые облегчают эту задачу, но я не уверен, что я ищу.

Ответы [ 4 ]

7 голосов
/ 10 января 2011

вы ищете optparse ( argparse для Python 2.7 +)

edit: Фактически, согласно этой секции документов, вы можете вызвать функцию parse_args, передав список аргументов, который приводит (но не ограничивается) sys.argv[1:]

Итак, если у вас есть, например, args_str = '-file all -height 100 -width 200 -type jpeg', вы можете позвонить parser.parse_args(args_str.split()), и он правильно проанализирует параметры.

3 голосов
/ 10 января 2011

Наилучшим вариантом является модуль argparse .

1 голос
/ 10 января 2011

Я люблю getopt , потому что это просто.

0 голосов
/ 04 мая 2012

Как насчет модуля shlex . Я думаю, что именно для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...