0
這是我的命令行腳本如何從argparse獲取參數名稱?
import argparse
parser = argparse.ArgumentParser('My command line app')
parser.add_argument('--start', type=start, metavar='HOST', dest='result', nargs='*', default='all', help='Start hosts')
parser.add_argument('--stop', type=stop, metavar='HOST', dest='result', nargs='*', default='all', help='Stop hosts')
parser.add_argument('--status', type=status, metavar='HOST', dest='result', nargs='*', default='all', help='Show hosts status')
args = parser.parse_args()
目前,我爲每個選項定義一個函數,但我想他們包裹在一個只有這三個選項。然後我需要知道使用了哪個參數。 argparse可能嗎?
解決方案
最後我把這種方式:
import argparse
def wrapper(command, hosts):
pass
parser = argparse.ArgumentParser('My script')
parser.add_argument('action', choices=['start', 'stop', 'status'], help='Action')
parser.add_argument('hosts', metavar='HOST', nargs='*', default='all')
args = parser.parse_args()
wrapper(args.action, args.hosts)
又如何能我得到這個選項的主機列表:python commandline.py --status 44.44.44.44 55.55.55.55 – AntonioRomero
我會將它們作爲單獨的參數添加,如上更新。這將CLI API更改爲'my.py start foo bar baz',每個調用只有一個可能的命令,而不是多個混合命令,但是這對我來說看起來更加安全。 – deceze
我不得不編輯命令,因爲我只需要三個選項的包裝器,最後添加args.command作爲第一個函數參數。但是你的答案真的很好,謝謝! – AntonioRomero