我創建的下一個「父」解析器:python 2.7 argparse:如何在普通參數組中創建互斥組?
parent_parser = argparse.ArgumentParser(add_help=False)
base_group = parser.add_argument_group(title = "global arguments")
base_group.add_argument("-l", "--log-file", metavar="FILE", help="set log file (default no log)")
base_group.add_argument("-c", "--clear-log", action="store_true", default=False, help="clear log file before logging")
mutex_group = base_group.add_mutually_exclusive_group()
mutex_group.add_argument("-v", "--verbose", action="store_true", default=False, help="print logs verbosity")
mutex_group.add_argument("-q", "--quiet", action="store_true", default=False, help="suppress every normal output")
如果我在另外一個使用這個解析器父母,那麼我想在幫助下一看:
usage: my_program.py [-h] [-l FILE] [-c] [-v | -q ] [<the parent arguments ...>] Desc... optional arguments: <the my_program.py arguments> global arguments: -l FILE, --log-file FILE set log file (default no log) -c, --clear-log clear log file before logging -v, --verbose print logs verbosity -q, --quiet suppress every normal output
但不幸的是,來自互斥組(-v和-q)的參數顯示在「可選參數」部分。爲什麼?這是一個錯誤嗎?或者我做錯了什麼?
UPDATE:
我創建了一個錯誤的這個問題:http://bugs.python.org/issue25882。 看到這個錯誤爲我的簡單代碼和它的輸出這種情況。
相互排斥的參數組未被命名,它們總是顯示在它們的父組中(這裏是「全局參數」)(參見,例如[this]中的輸出(http://stackoverflow.com/questions/7869345)/how-to-make-python-argparse-mutual-exclusive-group-arguments-without-prefix) – hlt
@hlt但是在這種情況下,父組是「base_group」,是不是? – Regisz
我想你誤解了我: )。我的問題中的輸出對我來說是很好的解決方案,但不會發生這種情況。 -v和-q顯示在「可選參數」部分中,顯示了子分析器的參數。我想如果-v和-q可以在「全局參數」中看到,父解析器的參數是什麼。 – Regisz