【发布时间】:2018-11-17 13:30:39
【问题描述】:
我正在编写一个在沙箱中执行其他命令的命令行工具。 我的工具的基本用法是:
my_tool 'echo "hello"'
执行echo "hello"。我希望能够写
my_tool echo "hello"
相反;但是,这会导致my_tool: error: unrecognized arguments: hello,因为除了主要参数之外,我的工具仅采用布尔选项-n。
我想让parse_args() 意识到echo "hello" 是主要参数,即使没有被刻度包围,因为echo 开头没有减号,因此表示主要参数的开始。
我试过parse_known_args()。但是,沙盒工具的选项会混入我自己工具的选项中,例如:
my_tool echo -n "hello"
与
的结果相同my_tool -n echo "hello"
这是不应该的。
【问题讨论】:
-
您可能想在 argparse 中检出子命令 - 如果
echo是子命令,它将有自己的参数,只有在回显之后才会被解释:docs.python.org/2/library/argparse.html#sub-commands 我是不过,目前懒得把它变成一个正确的答案。
标签: python argparse command-line-arguments