Jython 2.1のコマンドラインオプションの解析

私はwsadminスクリプトにJython 2.1を使用しており、コマンドラインオプションを解析するためのより良い方法を探したいと思っています。私は現在これをやっている:

-> 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 was added to python in 2.3. What other options do I have in Jython 2.1?

2

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

免責事項:いかなる方法でもテストされていません。

2
追加された
ありがとう、ちょっとしたエラーsys.argsがsys.argvだったはずです。私はapiを探していましたが、このシンプルな(そして振り返りの明白な!)ソリューションが動作し、私のニーズに十分に対応しています。
追加された 著者 blank,

getoptライブラリはJython 2.1にバンドルされています。これは、新しい引数の解析モジュールほどファンシーではありませんが、独自の引数解析を実行するよりもはるかに優れています。

getoptをインポートする

Documentation for 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
追加された

ほとんどのライブラリは実際にPythonディストリビューションの\ LibにあるシンプルなPythonモジュールであることに注意してください。しばしば単純なファイルコピーがあなたにライブラリを提供します。

この例では、optparse.py(依存関係textparse.py)をPython 2.7からJython 2.2にコピーしました。

1
追加された
ありがとう、それは可能ですが、私はサポートされていない依存関係を運用サーバー、特にWebSphereに追加するつもりはありません:)
追加された 著者 blank,