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?
As before, argparse automatically creates a --help option and documents your command-line interface (including the --upper-case option you just added). Try invoking aquarium.py with the --help option again to receive the updated help text: python3 aquarium.py --help.
The argparse module makes it easy to write user-friendly command-line interfaces. It parses the defined arguments from the sys. argv . The argparse module also automatically generates help and usage messages, and issues errors when users give the program invalid arguments.
The argparse module provides a convenient interface to handle command-line arguments. It displays the generic usage of the program, help, and errors. The parse_args() function of the ArgumentParser class parses arguments and adds value as an attribute dest of the object.
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
The same error pop-ups in 2 other scenarios:
1) Repeated code
parser.add_argument('-h', '--help', action='store_true', help=argparse.SUPPRESS) parser.add_argument('-h', '--help', action='store_true', help=argparse.SUPPRESS)
2) When you execute the code multiple times on the same kernel
I'm leaving it just in case if someone had simillar problem.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With