【问题标题】:argparse: How to stop interpreting arguments after first argument not starting with '-'?argparse:如何在第一个参数不以'-'开头后停止解释参数?
【发布时间】: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"

这是不应该的。

【问题讨论】:

标签: python argparse command-line-arguments


【解决方案1】:

通过

添加外部工具参数
add_argument('arg',nargs = argparse.REMAINDER)

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

【讨论】:

  • REMAINDER 不能很好地作为第一个位置参数。最好将其用作可选项。
猜你喜欢
  • 2011-10-04
  • 2015-07-17
  • 1970-01-01
  • 2015-10-09
  • 2016-01-30
  • 2012-10-22
  • 2022-12-01
  • 2013-11-06
  • 1970-01-01
相关资源
最近更新 更多