【发布时间】:2019-03-09 05:33:04
【问题描述】:
我正在使用 Python 的 argparse 模块来解析命令行参数。考虑以下简化示例,
# File test.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-s', action='store')
parser.add_argument('-a', action='append')
args = parser.parse_args()
print(args)
可以像这样成功调用
python test.py -s foo -a bar -a baz
-s 和每个-a 之后都需要一个参数,如果我们使用引号,则可能包含空格。但是,如果参数以破折号 (-) 开头并且不包含任何空格,则代码会崩溃:
python test.py -s -begins-with-dash -a bar -a baz
错误:参数 -s:需要一个参数
我知道它将-begins-with-dash 解释为新选项的开始,这是非法的,因为-s 尚未收到其所需的参数。虽然没有定义名称为 -begins-with-dash 的选项,但也很清楚,因此它不应该首先将其解释为选项。如何让argparse 接受带有一个或多个前导破折号的参数?
【问题讨论】:
-
由于
argparse解析方法,即使不是不可能,也很难做到这一点。 bugs.python.org/issue9334
标签: python python-3.x parsing command-line-arguments argparse