是否可以在argparse参数中为选择引入别名?
具体来说,我想让用户指定一个简短的参数,例如main.py --task a
,并在运行{'task': "a_long_filename"}
之后自动将其扩展为parse_args()
。
我希望以下内容可以存在,但在argparse文档中找不到任何内容:
parser.add_argument("--task",
choices={"a": "a_long_filename", "b": "b_long_filename"},
default=""a_long_filename"", help="Task to be solved."
)
答案 0 :(得分:1)
import argparse
TASK_CHOICES = {"a": "a_long_filename", "b": "b_long_filename"}
def get_args():
parser = argparse.ArgumentParser()
parser.add_argument("--task",
choices=TASK_CHOICES.keys(),
default="a",
help="Task to be solved.",
)
return parser, parser.parse_args()
parser, args = get_args()
args.task = TASK_CHOICES.get(args.task)
print(args)
输出:
$ python3 arg_task.py --task a
Namespace(task='a_long_filename')
$ python3 arg_task.py --task b
Namespace(task='b_long_filename')
答案 1 :(得分:1)
您可以实现argparse.Action的子类来进行转换:
export enum Colors {
Blue = "333CFF",
Yellow = "FCFF33",
Green = "33FF36",
}
interface IColorProps {
myColors?: Colors ;
}
export interface IParentComponentProps {
colors: IColorProps;
}