<p>很久以来,我一直在寻找解决方案
我想我终于拿到了。<br/>
所以我就把它放在这里。。。在</p>
<pre><code>from argparse import ArgumentParser
def _parse_args():
parser = ArgumentParser()
parser.add_argument('-1', ' flag-1', action='store_true', default=False)
parser.add_argument('-2', ' flag-2', action='store_true', default=False)
parser.add_argument('-3', ' flag-3', action='store_true', default=False)
args, unknown = parser.parse_known_args()
print(f"args : {args}")
print(f"unknown : {unknown}")
hidden = ArgumentParser(add_help=False)
hidden.add_argument('-d', ' debug', action='store_true', default=False)
hidden_args = hidden.parse_args(unknown)
print(f"hidden_args : {hidden_args}")
if __name__ == "__main__":
_parse_args()
</code></pre>
<p>结果:<br/>
显示帮助:</p>
^{pr2}$
<p>带调试标志:</p>
<pre><code>ubuntu → playAround $ ./test.py -d
args : Namespace(flag_1=False, flag_2=False, flag_3=False)
unknown : ['-d']
hidden_args : Namespace(debug=True)
</code></pre>
<p>带标志1和2:</p>
<pre><code>ubuntu → playAround $ ./test.py -12
args : Namespace(flag_1=True, flag_2=True, flag_3=False)
unknown : []
hidden_args : Namespace(debug=False)
</code></pre>
<p>使用标志1和2以及调试:</p>
<pre><code>ubuntu → playAround $ ./test.py -12 -d
args : Namespace(flag_1=True, flag_2=True, flag_3=False)
unknown : ['-d']
hidden_args : Namespace(debug=True)
</code></pre>
<p>使用此方法唯一不能做的是将debug short标志传递给其他短标志:</p>
<pre><code>ubuntu → playAround $ ./test.py -12d
usage: test.py [-h] [-1] [-2] [-3]
test.py: error: argument -2/ flag-2: ignored explicit argument 'd'
</code></pre>