Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Python | How to Parse Command-Line Options

  • Last Updated : 12 Jun, 2019

In this article, we will discuss how to write a Python program to parse options supplied on the command line (found in sys.argv). The argparse module can be used to parse command-line options.

Code #1 : Using argparse module

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning - Basic Level Course

Hypothetical command-line tool for searching a 
collection of files for one or more text patterns.
import argparse
parser = argparse.ArgumentParser(description ='Search some files')
parser.add_argument(dest ='filenames', metavar ='filename', nargs ='*')
parser.add_argument('-p', '--pat', metavar ='pattern'
                    required = True, dest ='patterns'
                    action ='append'
                    help ='text pattern to search for')
parser.add_argument('-v', dest ='verbose',
                    action ='store_true', help ='verbose mode')
parser.add_argument('-o', dest ='outfile'
                    action ='store', help ='output file')
parser.add_argument('--speed', dest ='speed'
                    action ='store', choices = {'slow', 'fast'},
                    default ='slow', help ='search speed')
args = parser.parse_args()

The program mentioned above defines a command-line parser with the following usage –

bash % python3 -h
usage: [-h] [-p pattern] [-v] [-o OUTFILE] 
  [--speed {slow, fast}] [filename [filename ...]]

Search some files

positional arguments:

optional arguments:
-h, --help           show this help message and exit
-p pattern,    --pat pattern
                 text pattern to search for
-v                   verbose mode
-o OUTFILE           output file
--speed {slow, fast}  search speed

Observe the output of the print() statements.

Code: The following session shows how data shows up in the program.

bash % python3 foo.txt bar.txt
usage: [-h] -p pattern [-v] [-o OUTFILE]
  [--speed {fast, slow}] [filename [filename ...]] error: the following arguments are required: -p/--pat
bash % python3 -v -p spam --pat = eggs 
           foo.txt bar.txt
filenames = ['foo.txt', 'bar.txt']
patterns = ['spam', 'eggs']
verbose = True
outfile = None
speed = slow
bash % python3 -v -p spam --pat = eggs 
                 foo.txt bar.txt -o results
filenames = ['foo.txt', 'bar.txt']
patterns = ['spam', 'eggs']
verbose = True
outfile = results
speed = slow
bash % python3 -v -p spam --pat = eggs 
            foo.txt bar.txt -o results \--speed = fast
filenames = ['foo.txt', 'bar.txt']
patterns = ['spam', 'eggs']
verbose = True
outfile = results
speed = fast
  • The argparse module is one of the largest modules in the standard library, and has a huge number of configuration options. This codes above show an essential subset that can be used and extended to get started.
  • To parse options, you first create an ArgumentParser instance and add declarations for the options you want to support it using the add_argument() method.
  • In each add_argument() call, the dest argument specifies the name of an attribute where the result of parsing will be placed.
  • The metavar argument is used when generating help messages.
  • The action argument specifies the processing associated with the argument and is often store for storing a value or append for collecting multiple argument values into a list.

Code : Argument collects all of the extra command-line arguments into a list. It’s being used to make a list of filenames

parser.add_argument(dest = 'filenames',
                    metavar = 'filename', nargs = '*')

Code : Argument sets a Boolean flag depending on whether or not the argument was provided

parser.add_argument('-v', dest = 'verbose'
                    action = 'store_true'
                    help = 'verbose mode')

Code : Argument takes a single value and stores it as a string

parser.add_argument('-o', dest = 'outfile'
                    action = 'store', help = 'output file')

The following argument specification allows an argument to be repeated multiple times and all of the values append into a list. The required flag means that the argument must be supplied at least once.

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!