使用“ -x”参数选择argparse选项

问题描述

客户在Python脚本中要求输入新参数,该参数应具有以下两个值之一:-l-t

一个代码中有什么问题,为什么会产生错误

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("action",choices=['-l','-t'])
parser.parse_args(['-t'])
usage: [-h] {-l,-t}
: error: the following arguments are required: action

解决方法

问题在于-t似乎正在开始一个新选项。可以通过事先插入伪参数-(请参见docs)来处理字面包含'--'的参数。

在运行时内:

args = parser.parse_args(['--','-t'])

或者从shell:

python myscript.py -- -t