Python "argparse" library

nadun96

Nadun Udaraka

Posted on May 19, 2024

Python "argparse" library

Introduction to "argparse"

The argparse module, included in the Python standard library (since versions 2.7 and 3.2), is a powerful tool for creating user-friendly command-line interfaces (CLIs) for your Python scripts. It simplifies the process of parsing arguments passed from the command line, making your scripts more robust and easier to use.

Key Features:

  • Flexibility: Defines various argument types (positional, optional, flags) and allows for multiple values.
  • Error Handling: Catches invalid arguments and provides informative error messages.
  • Help Messages: Generates usage and help messages automatically based on argument definitions.
  • Subparsers: Enables creating complex CLIs with hierarchical structures.

Step by step Tutorial:

1 . Import the module:

import argparse
Enter fullscreen mode Exit fullscreen mode

2 . Create an Argument Parser:

parser = argparse.ArgumentParser(description='Your script description')
Enter fullscreen mode Exit fullscreen mode



3 . Define Arguments:
Positional arguments: Required arguments that appear in a specific order after the script name.

parser.add_argument('filename', help='The file to process')
Enter fullscreen mode Exit fullscreen mode

Optional arguments: Added using flags (preceded by - or --) and can have default values.

parser.add_argument('-v', '--verbose', action='store_true', default=False,
                    help='Print verbose output')
parser.add_argument('-o', '--output', default='output.txt',
                    help='Output file (default: output.txt)')
Enter fullscreen mode Exit fullscreen mode
  • action='store_true': Sets a boolean flag (True if present, False otherwise).
  • default='value': Provides a default value if the argument is not specified. Argument types: Control how arguments are interpreted. parser.add_argument('--age', type=int, help='Your age (as an integer)') parser.add_argument('--repeat', type=float, nargs=2, help='Repeat a value (takes two floating-point numbers)')
  • type=int: Converts the argument value to an integer.
  • nargs=2: Allows capturing multiple values for the argument. 4 . Parse Arguments:
args = parser.parse_args()
Enter fullscreen mode Exit fullscreen mode

This captures the parsed arguments into a namespace object (args) that you can access in your script.


5 . Use the Arguments:

if args.verbose:
    print('Verbose mode enabled')

with open(args.filename, 'r') as f:
    # Process the file contents

if args.output:
    with open(args.output, 'w') as f:
        # Write output to the specified file
Enter fullscreen mode Exit fullscreen mode

Complete Example:


import argparse

parser = argparse.ArgumentParser(description='Count lines in a file')
parser.add_argument('filename', help='The file to process')
parser.add_argument('-v', '--verbose', action='store_true', default=False,
                    help='Print detailed information')

args = parser.parse_args()

if args.verbose:
    print('Counting lines in:', args.filename)

with open(args.filename, 'r') as f:
    num_lines = sum(1 for _ in f)

print(f'The file {args.filename} has {num_lines} lines.')
Enter fullscreen mode Exit fullscreen mode

Tips:

  • Customize help messages using help arguments in add_argument
  • Group related arguments using parser.add_argument_group()
  • Create subparsers for complex CLIs with multiple commands using subparsers_action='store_subcommand'

By following these steps and exploring the advanced features of argparse, you can create robust, user-friendly, and well-documented command-line interfaces for your Python scripts.

💖 💪 🙅 🚩
nadun96
Nadun Udaraka

Posted on May 19, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Python "argparse" library
python Python "argparse" library

May 19, 2024