我正在编写一个命令行工具,用于在沙箱中执行其他命令。 我的工具的基本用法是:
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