如何从argparse获取参数名?

2024-04-29 14:06:06 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的命令行脚本

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有可能吗?在

解决方案

最后我走了这条路:

^{pr2}$

Tags: adddefaulthostparsertypestatusargparsehelp
1条回答
网友
1楼 · 发布于 2024-04-29 14:06:06

听起来更明智的处理方法是choices参数:

commands = {'start': start, 'stop': stop, 'status': status}

parser = argparse.ArgumentParser('My command line app')
parser.add_argument('command', choices=commands.keys())
parser.add_argument('hosts', nargs='*', default=[])
args = parser.parse_args()

commands[args.command](*args.hosts)

相关问题 更多 >