2011-11-25 73 views
2

我正在使用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加入蟒蛇在2.3中。我在Jython 2.1中還有哪些其他選項?

回答

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

免責聲明:不以任何方式進行測試。

+0

謝謝,只是修正了一個小錯誤sys.args應該是sys.argv。我一直在尋找一個API,但這個簡單(並且回想起來很明顯!)解決方案能夠工作,並且足夠滿足我的需求。 – blank

1

請注意,大多數庫實際上都是簡單的Python模塊,您可以在Python發行版的\ Lib下找到它們,所以通常一個簡單的文件副本會爲您提供庫。

在這種情況下,我將optparse.py(及其依賴項textparse.py)從Python 2.7複製到Jython 2.2,並且它似乎導入得很好。

+0

謝謝,這是一種可能性,但我不會將不受支持的依賴項添加到生產服務器,特別是WebSphere :) – blank

2

getopt庫與Jython 2.1捆綁在一起。它不像新的參數解析模塊那樣花哨,但仍然比滾動你自己的參數解析好得多。

import getopt

的文檔getopt的:http://docs.python.org/release/2.1.1/lib/module-getopt.html

我用它在WebSphere應用服務器7.0.0.x.我看到你已經用websphere-6.1標記了這個問題 - 不幸的是,我手邊沒有一個WAS 6.1系統來測試。

編輯:在WebSphere 6.1上進行了驗證; getopt存在。