1

背景 我有一个脚本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_argument("-c", ...我希望它-c会被解析但-cdef不会。显然,-c是一个可选参数。

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

4

1 回答 1

4

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

在 UNIX 中,-cdefto mean很常见-c -d -e -f,which --cdefis a single option。argparse遵循这个约定。

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

于 2013-07-26T17:03:32.280 回答