擅长:python、mysql、java
<p>有一个python补丁(正在开发中)允许您这样做。<br/>
<a href="http://bugs.python.org/issue10984" rel="nofollow">http://bugs.python.org/issue10984</a></p>
<p>这样做的目的是允许相互排斥的群体重叠。所以<code>usage</code>看起来像:</p>
<pre><code>pro [-a xxx | -b yyy] [-a xxx | -c zzz]
</code></pre>
<p>更改argparse代码,以便可以创建两个组,这是最简单的部分。更改<code>usage</code>格式代码需要编写自定义<code>HelpFormatter</code>。</p>
<p>在<code>argparse</code>中,动作组不影响解析。它们只是一个格式化工具。在<code>help</code>中,互斥组只影响<code>usage</code>行。解析时,<code>parser</code>使用互斥组构造潜在冲突的字典(<code>a</code>不能与<code>b</code>或<code>c</code>一起出现,<code>b</code>不能与<code>a</code>等一起出现),然后在发生冲突时引发错误。</p>
<p>如果没有argparse补丁,我认为最好的选择是自己测试由<code>parse_args</code>生成的名称空间(例如,如果<code>a</code>和<code>b</code>都有非默认值),并引发自己的错误。甚至可以使用解析器自己的错误机制。</p>
<pre><code>parser.error('custom error message')
</code></pre>