Разбор параметров командной строки в Jython 2.1

Я использую Jython 2.1 для сценариев wsadmin и хочу найти лучший способ разбора параметров командной строки. Я сейчас делаю это:

-> deploy.py foo bar baz

а потом в скрипте:

foo = sys.arg[0]
bar = sys.arg[1]
baz = sys.arg[2]

но хотелось бы сделать так:

-> deploy.py -f foo -b bar -z baz

optparse был добавлен в python в версии 2.3. Какие еще варианты у меня есть в Jython 2.1?


person blank    schedule 25.11.2011    source источник


Ответы (3)


Как насчет такого:

args = sys.argv[:]  # Copy so don't destroy original
while len(args) > 0:
    current_arg = args[0]

    if current_arg == '-f':
        foo = args[1]
        args = args[2:]
    elif current_arg == '-b':
        bar = args[1]
        args = args[2:]
    elif current_arg == '-z':
        baz = args[1]
        args = args[2:]
    else:
        print 'Unknown argument: %r' % args[0]
        args = args[1:]

Отказ от ответственности: никоим образом не тестировался.

person Some programmer dude    schedule 25.11.2011
comment
Спасибо, только что исправил небольшую ошибку sys.args должен был быть sys.argv. Я искал API, но это простое (и в ретроспективе очевидное!) решение работает, и его достаточно для моих нужд. - person blank; 25.11.2011

Библиотека getopt поставляется вместе с Jython 2.1. Это не так красиво, как более новые модули анализа аргументов, но все же намного лучше, чем развертывание собственного анализа аргументов.

import getopt

Документация для getopt: http://docs.python.org/release/2.1.1/lib/module-getopt.html

Я использую его под WebSphere Appserver 7.0.0.x. Я вижу, вы отметили этот вопрос как websphere-6.1 - к сожалению, у меня сейчас нет под рукой системы WAS 6.1 для тестирования.

РЕДАКТИРОВАТЬ: проверено в WebSphere 6.1; Геопт есть.

person Ishan    schedule 30.07.2012

Обратите внимание, что большинство библиотек на самом деле являются простыми модулями Python, которые вы можете найти в разделе \Lib в вашем дистрибутиве Python, поэтому часто простая копия файла дает вам библиотеку.

В этом случае я скопировал файл optparse.py (с его зависимостью textparse.py) из Python 2.7 в Jython 2.2, и, похоже, он отлично импортируется.

person Giacomo Lacava    schedule 04.01.2012
comment
Спасибо, это возможно, но я не собираюсь добавлять неподдерживаемые зависимости на рабочий сервер, особенно на WebSphere :) - person blank; 04.01.2012