Skip to content

getopt

The Python getopt module parses command line options from sys.argv following Unix getopt() conventions. It processes short options like -v, -o filename, and long options like --verbose, --output=filename. It returns a list of recognized option-value pairs alongside any remaining non-option arguments:

Language: Python
>>> import getopt

>>> opts, args = getopt.getopt("-a -b -cfoo -d bar a1 a2".split(), "abc:d:")
>>> opts
[('-a', ''), ('-b', ''), ('-c', 'foo'), ('-d', 'bar')]
>>> args
['a1', 'a2']

Key Features

  • Parses short options from a compact string of letters like "abc:d:"
  • Parses long options from a list of strings like ["output=", "verbose"]
  • Stops processing at the first non-option argument with getopt() (Unix-style behavior)
  • Allows options to be intermixed with non-option arguments using gnu_getopt() (GNU-style)
  • Returns a list of (option, value) pairs and a list of remaining positional arguments
  • Supports options requiring an argument (: / =) and, as of Python 3.14, optional arguments with :: for short options and =? for long options

Frequently Used Classes and Functions

Object Type Description
getopt.getopt() Function Parses options Unix-style, stopping at the first non-option argument
getopt.gnu_getopt() Function Parses options GNU-style, allowing options and non-option arguments to be intermixed
getopt.GetoptError Exception Raised when an unrecognized option or a missing required argument is encountered

Examples

Parsing both short and long options from a simulated argument list:

Language: Python
>>> import getopt

>>> args = "--output=result.txt --verbose -n 5 file.txt".split()
>>> opts, rest = getopt.getopt(args, "n:", ["output=", "verbose"])
>>> opts
[('--output', 'result.txt'), ('--verbose', ''), ('-n', '5')]
>>> rest
['file.txt']

Catching GetoptError when an unrecognized option is passed:

Language: Python
>>> import getopt

>>> try:
...     getopt.getopt(["-z"], "ab")
... except getopt.GetoptError as err:
...     print(err)
option -z not recognized

Common Use Cases

The most common tasks for getopt include:

  • Parsing command line flags and options in scripts that follow Unix conventions
  • Supporting both short (-o) and long (--output) forms of the same option
  • Collecting positional arguments that remain after option processing
  • Porting or maintaining scripts originally written using C getopt() idioms

Real-World Example

A typical script uses getopt() to parse a help flag, a verbose flag, and an output file option, then processes the remaining positional arguments:

Language: Python Filename: tool.py
import getopt
import sys

def usage():
    print("Usage: tool.py [-h] [-v] [-o OUTPUT] FILE [FILE ...]")

def main():
    try:
        opts, files = getopt.getopt(
            sys.argv[1:], "hvo:", ["help", "verbose", "output="]
        )
    except getopt.GetoptError as err:
        print(err)
        usage()
        sys.exit(2)

    output = None
    verbose = False

    for opt, val in opts:
        if opt in ("-h", "--help"):
            usage()
            sys.exit()
        elif opt in ("-v", "--verbose"):
            verbose = True
        elif opt in ("-o", "--output"):
            output = val

    if verbose:
        print(f"Processing {len(files)} file(s), output: {output or 'stdout'}")

    for filename in files:
        print(f"Processing {filename}")

if __name__ == "__main__":
    main()

Run it with short or long option forms interchangeably:

Language: Shell
$ python tool.py -v -o result.txt file1.txt file2.txt
Processing 2 file(s), output: result.txt
Processing file1.txt
Processing file2.txt

$ python tool.py --verbose --output=result.txt file1.txt
Processing 1 file(s), output: result.txt
Processing file1.txt

The opts list preserves the order in which options appear, and unrecognized options raise GetoptError with a descriptive message.

Tutorial

Python Command-Line Arguments

Python command-line arguments are the key to converting your programs into useful and enticing tools that are ready to be used in the terminal of your operating system. In this step-by-step tutorial, you'll learn their origins, standards, and basics, and how to implement them in your program.

intermediate best-practices tools

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


By Leodanis Pozo Ramos • Updated April 15, 2026