代码
from argparse import ArgumentParser
p = ArgumentParser(description = 'foo')
p.add_argument('-b', '--bar', help = 'a description')
p.parse_args()
...导致输出:
$ python argparsetest.py -h
usage: argparsetest.py [-h] [-b BAR]
foo
optional arguments:
-h, --help show this help message and exit
-b BAR, --bar BAR a description
我想要的是:
$ python argparsetest.py -h
foo
optional arguments:
-h, --help show this help message and exit
-b BAR, --bar BAR a description
例如,在寻求帮助时没有使用消息。有没有办法做到这一点?
答案 0 :(得分:3)
绝对有可能 - 但我不确定有记录......
from argparse import ArgumentParser,SUPPRESS
p = ArgumentParser(description = 'foo',usage=SUPPRESS)
p.add_argument('-b', '--bar', help = 'a description')
p.parse_args()
从阅读源代码开始,我在一起搜索了一些似乎在显示错误消息时起作用的东西...... 警告 - 这些东西主要是 没有证件,因此可随时更改: - )
from argparse import ArgumentParser,SUPPRESS
import sys as _sys
from gettext import gettext as _
class MyParser(ArgumentParser):
def error(self, message):
usage = self.usage
self.usage = None
self.print_usage(_sys.stderr)
self.exit(2, _('%s: error: %s\n') % (self.prog, message))
self.usage = usage
p = MyParser(description = 'foo',usage=SUPPRESS)
p.add_argument('-b', '--bar', help = 'a description')
p.parse_args()
答案 1 :(得分:1)
答案 2 :(得分:0)
另外一个注意事项:如果您根本不需要帮助,您可以使用 add_help=False 构建解析器
def parse_args():
parser = argparse.ArgumentParser(add_help=False)
parser.add_argument("arg")
return parser.parse_known_args()
def main():
args, remaining = parse_args()
print(args)
print(remaining)
if __name__ == '__main__':
main()
user@host % python3 /tmp/test.py f
Namespace(arg='f')
[]
user@host % python3 /tmp/test.py f -h
Namespace(arg='f')
['-h']
user@host % python3 /tmp/test.py f -h --help
Namespace(arg='f')
['-h', '--help']
user@host %