请考虑以下代码:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('REPO_OR_DOUBLE_DASH', nargs='?')
parser.add_argument('SUBPAGE', nargs='?')
args = parser.parse_args()
print(args)
及其输出:
$ python a.py a b
Namespace(REPO_OR_DOUBLE_DASH='a', SUBPAGE='b')
$ python a.py '--' issues
Namespace(REPO_OR_DOUBLE_DASH='issues', SUBPAGE=None)
这里发生了什么?我期待Namespace(REPO_OR_DOUBLE_DASH='--', SUBPAGE='isues')
。我怎么去那儿?
答案 0 :(得分:2)
如果我理解正确,您就会问为什么第二个示例中的REPO_OR_DOUBLE_DASH
参数未设置为--
。
原因是argparse
遵循以下惯例:双破折号表示选项/标志的结束和位置参数的开始。因此,第一个"真实"参数为issues
,因此保存在REPO_OR_DOUBLE_DASH
参数中。