Search code examples
pythonrangeargparse

Python argparse value range help message appearance


I have an argument for a program that is an integer from 1-100 and I just don't like the way that it shows up in the -h help message when using argparse (it literally lists 0, 1, 2, 3, 4, 5,... etc)

Is there any way to change this or have it represented in another way?

Thanks

EDIT:

Here is the code for those who asked:

norse = parser.add_argument_group('Norse')
norse.add_argument('-n', '--norse', required=False, help='Run the Norse IPViking scan.', action='store_true')
norse.add_argument('--threshold', required=False, type=int, choices=range(0,101), help='Threshold (0-100) denoting at what threat level to provide additional data on an IP \
                        address. Default is 49.', default=49)

Solution

  • Use the metavar parameter of add_argument().

    For example:

    norse = parser.add_argument_group('Norse')
    norse.add_argument('-n', '--norse', required=False, help='Run the Norse IPViking scan.', action='store_true')
    norse.add_argument('--threshold', required=False, type=int, choices=range(0,101),
                       metavar="[0-100]", 
                       help='Threshold (0-100) denoting at what threat level to provide additional data on an IP \
                            address. Default is 49.', default=49)
    

    Test:

    from argparse import ArgumentParser
    
    norse = ArgumentParser()
    
    norse.add_argument('-n', '--norse', required=False, help='Run the Norse IPViking scan.', action='store_true')
    norse.add_argument('--threshold', required=False, type=int, choices=range(0,101), metavar="[0-100]", help='Threshold (0-100) denoting at what threat level to provide additional data on an IP address. Default is 49.', default=49)
    
    
    norse.print_help()
    

    Results

    usage: -c [-h] [-n] [--threshold [0-100]]
    
    optional arguments:
      -h, --help           show this help message and exit
      -n, --norse          Run the Norse IPViking scan.
      --threshold [0-100]  Threshold (0-100) denoting at what threat level to
                           provide additional data on an IP address. Default is
                           49.