lia*_*ang 1 python python-2.7 argparse
背景
我有一个脚本,我用它parseargs来部分解析输入。
parser = argparse.ArgumentParser()
parser.add_argument("-c", action="store_true")
nspc = parser.parse_known_args()
Run Code Online (Sandbox Code Playgroud)
使用 parseargs 的原因是允许 -c 选项出现在输入中的任何位置。我只想解析这个选项,然后在代码中我自己进行额外的解析。原因是,脚本从配置文件中接受大量参数,即 myscript.py 直到运行时才知道这些参数。
我遇到的问题是,某些参数可能以字母“c.”开头,所以如果我说
$ myscript.py "some argument" -cdef
Run Code Online (Sandbox Code Playgroud)
我收到错误
myscript.py:错误:参数-c:忽略显式参数“ef”
因为我说过parser.add_argument("-c", ...我希望它-c会被解析,但-cdef不会。显然,-c是一个可选参数。
我如何告诉解析器这-c是一个选项但-cdef不是?
用于--多字符参数名称。
在 UNIX 中,for-cdef表示-c -d -e -f,而--cdef是一个选项,这是相当常见的。argparse遵循这一约定。
(例如:ls -la相当于ls -l -a,而ls --color仅仅是一个选项。)