Python2.7 argparse.parse_已知_args解析错误

Python2.7 argparse.parse_已知_args解析错误,python,python-2.7,argparse,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直到运行时才知道这些参数 我

背景 我有一个脚本,使用
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:错误:参数-c:忽略显式参数“ef”

既然我说了
parser.add_参数(“-c)”,…
,我希望
-c
会被解析,但
-cdef
不会。显然,
-c
是一个可选参数

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

对于多字符参数名称,请使用
--

在UNIX中,
-cdef
通常表示
-c-d-e-f
,而
-cdef
是一个单一选项。
argparse
遵循此约定

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

对于多字符参数名称,请使用
--

在UNIX中,
-cdef
通常表示
-c-d-e-f
,而
-cdef
是一个单一选项。
argparse
遵循此约定


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

哇,我觉得自己很笨。谢谢你的快速反应!哇,我觉得自己很笨。谢谢你的快速反应!