首先,我很抱歉这个标题没有给出一个关于我的问题是什么的完美 idea ,我有点挣扎,所以我将用一个可复制的例子更清楚地说明它:
我有以下代码:
example.py:
import argparse
def parse_args():
"""Command line argument parser
Returns:
The extra arguments
"""
parser = argparse.ArgumentParser(description="Arguments for test runner")
parser.add_argument('-e', '--extra_args', type=str, default="", help="Extra arguments. Enter as a single line encapsulated by quotes. Example: -e \"--repeat=0 otherstuff -x anotherpositional\"")
arguments = parser.parse_args()
return arguments
if __name__ == "__main__":
args = parse_args()
print(args.extra_args)
然后,--extra_args
参数将用作子流程调用的位置参数.
我需要通过的论点如下:--repeat=0
.它不起作用,我得到了以下结果:
python example.py -e "toto" # This print toto
python example.py -e "--repeat = 0" # This print --repeat = 0
python example.py -e "--repeat" # error: argument -e/--extra_args: expected one argument
python example.py -e "--repeat=0" # error: argument -e/--extra_args: expected one argument
我的理解是,解析器将--repeat
作为一个参数进行处理,发现它没有任何值,然后中断.但不幸的是,我别无 Select ,只能写"--repeat=0"全部附加,因为软件接收到它.
你知道有什么解决办法吗?