gpt4 book ai didi

python - 如何从 argparse 获取参数名称?

转载 作者:行者123 更新时间:2023-12-01 04:31:13 26 4
gpt4 key购买 nike

这是我的命令行脚本

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)

最佳答案

听起来处理这个问题的更明智的方法是使用 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)

关于python - 如何从 argparse 获取参数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32394169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com