【发布时间】:2014-11-10 10:10:34
【问题描述】:
我想创建一个可选参数,它将是'-- '(双破折号和一个空格)并将其后的所有内容作为其值。问题是在'-- ' 之后可能会出现一些其他可选参数。我不希望这些被解析为可选参数,而是'-- ' 的值。例如:
python prog1 --foo 1 --bar 2
这里foo 和bar 是可选参数,其值分别为1 和2
python prog1 --foo 1 --bar 2 -- --foo 4 --bar 14
在这里,我希望 '-- ' 之前的 foo 和 bar 被解析为可选参数。但我希望将'--foo 4 --bar 14' 解析为可选参数'-- ' 的值。如果可能的话,我想在不将'-- ' 之后的参数重命名为foo2 和bar2 的情况下执行此操作。
那么这可能吗?以及如何实施?
【问题讨论】:
-
为什么要这样做?这是一个完全的反模式,很可能只会让人们(/你未来的自己)感到困惑。
-
@will -- 这不是一个完整的反模式。这实际上是一种相对常见的方式来指定将传递给从属程序的参数(可能通过
subprocess.Popen)。 -
@mgilson 所以我刚刚读到这个。这对我来说是个新闻。
-
事实上,
argparse已经支持使用--表示选项解析结束的通用约定。 -
--通常在类 Unix 操作系统上用于将参数与原始输入分开(通常原始输入表示要传递给某些 other 命令的参数,如xargs的情况)。见unix.stackexchange.com/q/11376/4322。
标签: python arguments command-line-arguments argument-passing