背景
我有一个脚本,其中使用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不是一个选项?

最佳答案

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

在UNIX中,-cdef表示-c -d -e -f是相当普遍的,而--cdef是一个选项。 argparse遵循此约定。

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

关于python - Python2.7 argparse.parse_known_args错误解析,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17887044/

10-12 21:12