Optparse,旧版本只是忽略了所有无法识别的参数并继续.在大多数情况下,这并不理想,并且在argparse中已更改.但是在某些情况下,您希望忽略任何无法识别的参数并解析您指定的参数.
例如:
parser = argparse.ArgumentParser()
parser.add_argument('--foo', dest="foo")
parser.parse_args()
$python myscript.py --foo 1 --bar 2
error: unrecognized arguments: --bar
Run Code Online (Sandbox Code Playgroud)
反正有没有覆盖这个?
我想使用argparse来解析形式为"arg = val"的命令行.例如,用法是:
script.py conf_dir=/tmp/good_conf
Run Code Online (Sandbox Code Playgroud)
要实现它,我这样做:
desc = "details"
parser = argparse.ArgumentParser(description=desc, add_help=False)
args = parser.add_argument("conf_dir")
args = parser.parse_args("conf_dir=FOO".split())
args = parser.parse_args()
print args.conf_dir
Run Code Online (Sandbox Code Playgroud)
但是,问题在于,在调用脚本时:
python script.py conf_dir=/tmp/good_conf
Run Code Online (Sandbox Code Playgroud)
我明白了:
conf_dir=/tmp/good_conf
Run Code Online (Sandbox Code Playgroud)
我期待的地方
/tmp/good_conf
Run Code Online (Sandbox Code Playgroud)
所以,问题是:我可以使用argparse来解析包含名称值对的cmd行吗?任何提示?
编辑:我想这样做的原因而不是像--conf_dir =/tmp/good_dir这样的东西是因为还有其他工具(用其他语言编写),它使用conf_dir =/tmp/good_dir样式的参数.为了保持一致性,我是以这种方式解析args.