Python2.7 argparse.parse_known_args解析不正确

时间:2013-07-26 17:01:36

标签: python python-2.7 argparse

背景的 我有一个脚本,我使用parseargs来部分解析输入。

parser = argparse.ArgumentParser()
parser.add_argument("-c", action="store_true")
nspc = parser.parse_known_args()

使用parseargs的原因是允许-c选项出现在输入中的任何位置。我只想解析这个选项,然后在代码中我自己进行额外的解析。原因是,脚本接受来自配置文件的大量参数,即myscript.py直到运行时才知道参数。

问题我遇到的问题是,有些参数可能以字母“c。”开头,所以如果我说

$ myscript.py "some argument" -cdef

我收到错误

myscript.py:error:参数-c:忽略显式参数'ef'

由于我说parser.add_argument("-c", ...我希望解析-c-cdef不会。显然,-c是一个可选参数。

如何告诉解析器-c是一个选项,但-cdef不是?

1 个答案:

答案 0 :(得分:4)

--用于多字符参数名称。

在UNIX中,-cdef表示-c -d -e -f相当常见,而--cdef是单一选项。 argparse遵循这一惯例。

(例如:ls -la相当于ls -l -a,而ls --color只是一个选项。)