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