optparse в питоне - PullRequest
       15

optparse в питоне

2 голосов
/ 20 мая 2011

Есть ли способ настроить optparse в python, чтобы не брать начало - ? Так что вместо

%program -d optionvalue

я получаю

%program d optionvalue

В настоящее время, когда я пытаюсь сделать

parser.add_option('d', '--database')

я получаю следующую ошибку:

optparse.OptionError: invalid option string 'd': must be at least two characters long

Любая помощь будет принята с благодарностью! Спасибо

Ответы [ 3 ]

6 голосов
/ 20 мая 2011

Короче говоря, нет.

аргумент, используемый для предоставления дополнительной информации для руководства или настройки выполнения программы.Есть много разных синтаксисов для опций;традиционный синтаксис Unix - это дефис («-»), за которым следует одна буква, например -x или -F.Кроме того, традиционный синтаксис Unix позволяет объединять несколько параметров в один аргумент, например, -x -F эквивалентно -xF.Представлен проект GNU, за которым следует ряд слов, разделенных дефисом, например --file или --dry-run. Это только два дополнительных синтаксиса, предоставляемых optparse.

http://docs.python.org/library/optparse.html#terminology

Вы должны проанализировать это самостоятельно.

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

parse_args() позволяет вам предоставить собственный список аргументов, а не просто использовать sys.argv[1:], который используется по умолчанию. Таким образом, вы можете предварительно обработать аргументы командной строки, а затем передать их в optargs. Предполагая, что вы хотите, чтобы все 1-символьные аргументы учитывались в качестве ключей параметров:

orig_args = sys.argv[1:]
new_args = []
for arg in orig_args:
    if len(arg) == 1:
        arg = '-' + arg
    new_args.append(arg)

(options, args) = parser.parse_args(new_args)

(вы также можете создать подкласс OptionParser и поместить его туда)

0 голосов
/ 20 мая 2011

Вы можете использовать принудительное обратное действие:

http://docs.python.org/library/optparse.html#callback-example-6-variable-arguments

, которое дает вам необработанный доступ к левому и правому аргументам

...