argparse

The Python argparse module is a framework for creating user-friendly command-line interfaces (CLI). It allows you to define command-line arguments and options. It takes care of parsing them, and automatically generates help and usage messages for you.

Here’s quick example:

Python
>>> import argparse >>> parser = argparse.ArgumentParser( ...  description="Process some integers." ... ) >>> parser.add_argument( ...  "integers", ...  metavar="N", ...  type=int, ...  nargs="+", ...  help="an integer for the accumulator" ... ) >>> parser.add_argument( ...  "--operation", ...  choices=["sum", "max"], ...  default="max", ...  help="operation to perform on the integers (default: max)" ... ) >>> args = parser.parse_args(["2", "3", "5", "--operation", "sum"]) >>> if args.operation == "sum": ...  result = sum(args.integers) ... else: ...  result = max(args.integers) ... >>> result 10 

Key Features

  • Creates and parses command-line arguments, options, and subcommands
  • Automatically generates help and usage messages
  • Supports positional and optional command-line arguments
  • Provides type checking and conversion for arguments

Frequently Used Classes and Functions

Object Type Description
ArgumentParser Class Provides the main class for argument parsing
ArgumentParser.add_argument() Method Adds a new argument to the parser
ArgumentParser.parse_args() Method Parses command-line arguments
ArgumentParser.print_help() Method Prints a help message and exits
ArgumentParser.add_argument_group() Method Groups command-line arguments

Examples

Creating a parser with a positional argument and an optional argument:

Python
>>> import argparse >>> parser = argparse.ArgumentParser( ...  description="A simple example" ... ) >>> parser.add_argument( ...  "filename", ...  help="the file to process" ... ) >>> parser.add_argument( ...  "--verbose", ...  action="store_true", ...  help="increase output verbosity" ... ) >>> args = parser.parse_args(["example.txt", "--verbose"]) >>> args.filename 'example.txt' >>> args.verbose True 

Common Use Cases

  • Creating command-line tools with various input parameters
  • Providing command-line interfaces for packages and libraries

Real-World Example

Suppose you need a program to process a list of files and want to implement different verbosity levels for the output. Here’s how you can do it with argparse:

Python
>>> import argparse >>> parser = argparse.ArgumentParser( ...  description="Process files with verbosity control" ... ) >>> parser.add_argument( ...  "files", ...  metavar="F", ...  type=str, ...  nargs="+", ...  help="files to process" ... ) >>> parser.add_argument( ...  "--verbose", ...  "-v", ...  action="count", ...  default=0, ...  help="increase verbosity level" ... ) >>> args = parser.parse_args(["file1.txt", "file2.txt", "-vv"]) >>> if args.verbose >= 2: ...  print(f"Processing files: {args.files}") Processing files: ['file1.txt', 'file2.txt'] >>> for file in args.files: ...  print(f"Processing {file}") Processing file1.txt Processing file2.txt 

In this example, you use the argparse module to define a command-line interface that accepts multiple file names and a verbosity option, demonstrating its versatility in handling complex argument parsing scenarios.

Tutorial

Build Command-Line Interfaces With Python's argparse

In this step-by-step Python tutorial, you'll learn how to take your command-line Python scripts to the next level by adding a convenient command-line interface (CLI) that you can write with the argparse module from the standard library.

intermediate python stdlib

For additional information on related topics, take a look at the following resources:


By Leodanis Pozo Ramos • Updated June 23, 2025