Разбор параметров командной строки в Jython 2.1 - PullRequest
2 голосов
/ 25 ноября 2011

Я использую 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?

Ответы [ 3 ]

2 голосов
/ 30 июля 2012

Библиотека 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; getopt присутствует.

2 голосов
/ 25 ноября 2011

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

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:]

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

1 голос
/ 04 января 2012

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

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

...