【发布时间】:2012-10-22 01:49:31
【问题描述】:
如何解析由特殊预定义语法分隔的可变长度参数列表。一个例子:
./script --arg1 --cmdname otherscript --a1 --a2 --cmdname-- --arg3
用argparse解析后脚本应该有三个参数:arg1、cmdname、arg3。参数cmdname 应包含三个值的列表otherscript、a1、a2。
拥有这样的配方对于能够将cmdname 中的所有内容传递到subprocess.popen(cmdname, ...) 调用中会很有用。
我在考虑子解析器。但我相信子解析器无法停止,并且与其他子解析器确实是互斥的。还有其他简单的,已经提供的方法吗?将Action 子类化是一种方法吗?
【问题讨论】:
-
这种替代语法就足够了吗?
./script --arg1 --cmdname "otherscript --a1 --a2" --arg3 -
@unutbu -- 这是一个非常好的建议。将它与
shlex.split配对,我认为你会做生意。 -
@unutbu 和@mgilson:好点!不知道
shlex.split()。我建议的语法在 shell 引用和转义方面更具吸引力:如果您不必担心引用,传递带有参数的子命令会容易得多。
标签: python python-3.x argparse