8
我正在寫一個服務器查詢工具,我的代碼一點點在最高層解析參數:的Python argparse:NARGS +或*根據之前的說法
# Parse arguments
p = argparse.ArgumentParser()
g = p.add_mutually_exclusive_group(required=True)
g.add_argument('--odam', dest='query_type', action='store_const',
const='odam', help="Odamex Master query.")
g.add_argument('--odas', dest='query_type', action='store_const',
const='odas', help="Odamex Server query.")
p.add_argument('address', nargs='*')
args = p.parse_args()
# Default master server arguments.
if args.query_type == 'odam' and not args.address:
args.address = [
'master1.odamex.net:15000',
'master2.odamex.net:15000',
]
# If we don't have any addresses by now, we can't go on.
if not args.address:
print "If you are making a server query, you must pass an address."
sys.exit(1)
是否有一個更好的方法來做到這一點,最好是所有的解析器?最後一個錯誤看起來有點不合時宜,如果我可以使地址的範圍取決於是否通過了--odam或者odas,那將會很好。我可以創建一個子分析器,但是這會使得幫助看起來有點奇怪,因爲它會忽略命令的地址部分。
正是我一直在尋找! – AlexMax 2010-11-06 23:58:22
它可能更有意義使用,而不是'sys.exit [解析錯誤](http://docs.python.org/library/argparse.html#argparse.ArgumentParser.error)()' – Christoph 2012-11-22 12:57:05
@Christoph:真;謝謝! – unutbu 2012-11-22 13:06:41