2013-07-26 58 views
1

背景 我有一个脚本,我使用parseargs来部分解析输入。Python2.7 argparse.parse_known_args解析不正确

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。潘岳:错误:参数-c:忽略明确的说法“EF”

因为我说parser.add_argument("-c", ...我预计-c会被解析,但-cdef不会。显然,-c是一个可选参数。

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

回答

4

使用--作为多字符参数名称。

在UNIX中,-cdef的意思是​​,而--cdef是一个选项。​​遵循这个约定。

(作为一个例子:ls -lals -l -a等效,而ls --color仅仅是一个单一的选项。)

+0

Wooow,感觉哑。感谢您及时的回复! – liang