我的命令行实用程序应该接受相互连接的几个过滤器(类似于Unix管道) .
每个过滤器都有许多选项 . 例如 chain
过滤器目前有以下选项:
-t NAMESPACE, --target NAMESPACE
target namespace(s)
-s {precedence,doc}, --next-script {precedence,doc}
"next script" algorithm ("precedence" is not
supported)
-n {ignore,remove,error}, --not-in-target {ignore,remove,error}
what if a result is not in target NS
-u URL, --universal-precedence URL
universal precedence
-W {inverseofsum,sumofinverses}, --weight-formula {inverseofsum,sumofinverses}
formula for weighting scripts
如何在命令参数中表示过滤器的工作流程?
首先想到的是使用JSON数组 . 但是JSON对于命令行来说并不是一个很好的格式 .
下一个想法是用一些分隔符分隔过滤器 . 它可能是 --
或 --separator
或像这样 . 但是 --
已经被用于将命令行选项与其他命令行参数分开,并且 --separator
看起来不太好 .
另一个麻烦是,当我使用Python 3 argparse
时,这个包似乎不适合在一个命令行中链接的几个子命令,如:
boiler script filter1 --separator \
chain -t http://www.w3.org/1999/xhtml -n error --separator \
transformation filter2 --arg x=y --separator \
transformation filter3
在这里,我尝试链接四个过滤器子命令: script
, chain
, tranformation
, tranformation
. 但是Python argparse
(貌似)不支持在一个命令行中使用多个子命令 .
那么如果不是 argparse
那么用什么库来处理这样的命令行呢?
我的问题:
-
这些命令行有哪些用户友好的格式?
-
如何用Python
argparse
解析它? -
如果不是
argparse
,那又是什么呢?
另请注意,将来我可能会决定使用其他语言(可能是D)而不是Python来重写我的软件 .