Argparse“ArgumentError: argument -h/--help: conflicting option string(s): -h, --help”

匿名 (未验证) 提交于 2019-12-03 02:56:01

问题:

Recently, I am learning argparse module, Argument error occurred below the code

import argparse import sys   class ExecuteShell(object):     def create(self, args):         """aaaaaaa"""         print('aaaaaaa')         return args      def list(self, args):         """ccccccc"""         print('ccccccc')         return args      def delete(self, args):         """ddddddd"""         print('ddddddd')         return args   class TestShell(object):     def get_base_parser(self):         parser = argparse.ArgumentParser()         parser.add_argument('-h',                             '--help',                             action='store_true',                             help=argparse.SUPPRESS)          parser.add_argument('-c', action='store',                             dest='create_value',                             help='create a file')          parser.add_argument('-d', action='store',                             dest='delete_value',                             help='delete a file')          parser.add_argument('-l', action='store',                             dest='list_value',                             help='list a dir')          return parser      def _find_actions(self, subparsers, actions_module):         for attr in (action for action in dir(actions_module) if not  action.startswith('__')):             callback = getattr(actions_module, attr)             desc = callback.__doc__ or ''             subparser = subparsers.add_parser(attr, description=desc)             subparser.add_argument('-h', '--help', action='help',                                    help=argparse.SUPPRESS)             self.subcommands[attr] = subparser             subparser.set_defaults(func=callback)      def main(self, args):         parser = self.get_base_parser()         (options, args) = parser.parse_known_args(args)         subparsers = parser.add_subparsers(metavar='<subcommand>')         a = ExecuteShell()         self.subcommands = {}         subcommand_parser = self._find_actions(subparsers, a)   if __name__ == "__main__":     a = TestShell()     a.main(sys.argv[1:]) 

Why do I get this error and how can I fix it?

回答1:

argparse adds --help and -h options by default. If you don't want to use the built-in help feature, you need to disable it with:

parser = argparse.ArgumentParser(add_help=False) 

See the documentation



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!