解析Jython 2.1中的命令行选项

时间:2011-11-25 08:55:39

标签: python websphere jython websphere-6.1 wsadmin

我正在使用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

在2.3中将

optparse添加到python中。我在Jython 2.1中还有哪些其他选择?

3 个答案:

答案 0 :(得分:2)

这样的事情怎么样:

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 :(得分:2)

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 :(得分:1)

请注意,大多数库实际上都是简单的Python模块,您可以在Python发行版中的\ Lib下找到它们,因此通常一个简单的文件副本就会为您提供库。

在这种情况下,我将optparse.py(及其依赖项textparse.py)从Python 2.7复制到Jython 2.2,它似乎导入得很好。