Анализатор параметров Python: логический флаг с необязательными параметрами - PullRequest
6 голосов
/ 11 мая 2011

Я использую optparse.OptionParser для управления аргументами для некоторых сценариев, и мне было интересно / хотелось бы сделать это иметь логические флаги (т.е. action=store_true), которые также могут принимать параметр.

Чтобы поместить это в контекст, у меня есть приложение, которое может использовать столько GPU / процессоров, сколько находит на машине. По ряду причин иногда требуется ограничить количество используемых устройств, и вместо того, чтобы загромождать командную строку, я хотел бы иметь возможность:

script -c -g

означает использовать все, что вы можете из всех процессоров и процессоров, и

script -c 2 -g 3

означает ограничение выполнения скрипта до 2 и 3 графических процессоров.

Прочитав документацию optparse, я не стал мудрее. О, великий ТАК гуру! Дай мне свою мудрость!

1 Ответ

1 голос
/ 11 мая 2011

Вы можете использовать действие callback, чтобы реализовать это довольно легко. В частности, пример 6 в документации действия обратного вызова OptionParser обсуждает переменное число аргументов. Вот убедительная цитата из этого примера:

Вещи становятся волосатыми, когда вы хотите возможность взять переменное число аргументы. Для этого случая вы должны написать обратный вызов, так как optparse не обеспечить любые встроенные возможности для это.

...