Używam Jythona 2.1 do skryptów WSADMIN i chcesz znaleźć lepszy sposób parsowania opcji wiersza poleceń. Obecnie to robię:

-> deploy.py foo bar baz

A następnie w skrypcie:

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

Ale chciałbym to zrobić:

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

OptParse dodano do Pythona w 2.3. Jakie inne opcje mam w Jythonie 2.1?

2
blank 25 listopad 2011, 12:55

3 odpowiedzi

Najlepsza odpowiedź

Co powiesz na coś takiego:

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

Zrzeczenie się: nie testowany w żaden sposób.

2
blank 25 listopad 2011, 19:47

Biblioteka Getopt jest dołączona do Jythona 2.1. Nie jest tak fantazja, jak nowsze moduły analizowania argumentów, ale wciąż znacznie lepiej niż przetoczenie własnej analizowania argumentów.

import getopt

Dokumentacja GetOpt: http://docs.Python.org/release /2.1.1/lib/module-getopt.html.

Używam go pod WebSphere Appserver 7.0.0.x.x. Widzę, że oznaczono to pytanie z produktem WebSphere-6.1 - Niestety, nie mam systemu 6,1 pod ręką, aby przetestować teraz.

Edytuj: Zweryfikowany na WebSphere 6.1; Getopt jest obecny.

2
Ishan 30 lipiec 2012, 12:19

Należy pamiętać, że większość bibliotek jest w rzeczywistości prostymi modułami Python, które można znaleźć pod lib w dystrybucji Pythona, więc często prosta kopia pliku zapewni Ci bibliotekę.

W tym przypadku skopiowałem optparse.py (z jej zależnością Textparse.py) z Pythona 2.7 do Jythona 2.2 i wydaje się, że importuje się dobrze.

1
Giacomo Lacava 4 styczeń 2012, 13:23