擅长:python、mysql、java
<p>按照<em>ArgumentParser</em>的工作方式,它总是在解析了可选参数之后检查任何尾随的位置参数。因此,如果您有一个与可选参数同名的位置参数,并且它没有出现在命令行的任何位置,那么可以保证覆盖可选参数(使用其默认值或<em>None</em>)。在</p>
<p>坦白地说,这对我来说似乎是一个bug,至少在互斥组中使用时是这样,因为如果您显式地指定了参数,这将是一个错误。在</p>
<p>也就是说,我建议的解决方案是给positional论点起一个不同的名字。在</p>
<pre><code>parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument('-u',' username')
group.add_argument('static_username',nargs='?',default='admin')
</code></pre>
<p>然后在解析时,使用可选的<em>用户名</em>,否则返回到位置<em>静态用户名</em>。在</p>
^{pr2}$
<p>我知道这不是一个特别好的解决办法,但我不认为任何答案会是。在</p>