argparse:如何在第一个参数不以"-"开头后停止解释参数?



我正在编写一个命令行工具,用于在沙箱中执行其他命令。 我的工具的基本用法是:

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"

它不应该。

通过以下方式添加外部工具参数

add_argument('arg',nargs = argparse.REMAINDER)

https://docs.python.org/2/library/argparse.html#argparse-remainder