[英]And odd command-line interface to parse arguments for
我已經得到了有一堆選項的Python程序的命令行界面(比如, --a
, --b
, --c
),但與其他交換機命令之間的一個開關。
因此,也許prog -S abc
調用-S
動作,而prog -Y abc
調用-Y
動作。 prog -Y abc --a=2 --b=3
,則應使用參數a
和b
以及位置參數a
, b
, c
調用-Y
動作
有什么方法可以使argparse
或getopt
為我解析參數嗎? 還有其他圖書館可以很好地做到這一點嗎?
我認為在這種情況下使用argparse的子命令將很有用。
基本上,您可以創建一個主解析器,該解析器負責子命令的解析以及一些通用的常規選項,然后創建幾個子解析器(每個子命令一個),負責解析傳遞給子命令的特定選項。
我不確定這是否有幫助,但是到目前為止,我一直在編寫一個包裝器,該包裝器通過Web界面從XML設置參數,然后將其傳遞給命令:
顯然需要更復雜的參數字符串,但是為了舉例說明:
def __main__():
parser = optparse.OptionParser()
parser.add_option( '-Q', '--ibmax', dest='ibmax', help='' )
(options, args) = parser.parse_args()
if options.ibmax != 'None' and int( options.ibmax ) >= 1:
ibmax = '--bmax %s' % options.ibmax
cmd1 = Popen([another.py, '-Q "%s"' % (options.ibmax),], stdout=PIPE).communicate()[0]
process = subprocess.Popen(cmd1, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
根據我的Web界面中的某些標志,更多選項會添加到arg列表中,因此會運行不同的命令。 將每個命令選項添加到解析器,然后檢查-Y或-S命令的值以設置vars並更改您需要傳遞的命令。
我希望這會有所幫助,但我不是python專業人士,這對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.