Python offers several ways to handle arguments passed when we invoke the program from the command line.
So far you’ve run programs either from a REPL, or using
python <filename>.py
You can pass additional arguments and options when you do so, like this:
python <filename>.py <argument1>
python <filename>.py <argument1> <argument2>
A basic way to handle those arguments is to use the sys
module from the standard library.
You can get the arguments passed in the sys.argv
list:
import sys
print(len(sys.argv))
print(sys.argv)
The sys.argv
list contains as the first item the name of the file that was ran, e.g. ['main.py']
.
This is a simple way, but you have to do a lot of work. You need to validate arguments, make sure their type is correct, you need to print feedback to the user if they are not using the program correctly.
Python provides another package in the standard library to help you: argparse
.
First you import argparse
and you call argparse.ArgumentParser()
, passing the description of your program:
import argparse
parser = argparse.ArgumentParser(
description='This program prints the name of my dogs'
)
Then you proceed to add arguments you want to accept.
For example in this program we accept a -c
option to pass a color, like this: python program.py -c red
import argparse
parser = argparse.ArgumentParser(
description='This program prints a color HEX value'
)
parser.add_argument('-c', '--color', metavar='color', required=True, help='the color to search for')
args = parser.parse_args()
print(args.color) # 'red'
If the argument is not specified, the program raises an error:
➜ python python program.py
usage: program.py [-h] -c color
program.py: error: the following arguments are required: -c
You can set an option to have a specific set of values, using choices
:
parser.add_argument('-c', '--color', metavar='color', required=True, choices={'red','yellow'}, help='the color to search for')
➜ python python program.py -c blue
usage: program.py [-h] -c color
program.py: error: argument -c/--color: invalid choice: 'blue' (choose from 'yellow', 'red')
There are more options, but those are the basics.
And there are community packages that provide this functionality, too, like Click and Python Prompt Toolkit.
More python tutorials:
- Introduction to Python
- Installing Python 3 on macOS
- Running Python programs
- Python 2 vs Python 3
- The basics of working with Python
- Python Data Types
- Python Operators
- Python Strings
- Python Booleans
- Python Numbers
- Python, Accepting Input
- Python Control Statements
- Python Lists
- Python Tuples
- Python Sets
- Python Dictionaries
- Python Functions
- Python Objects
- Python Loops
- Python Modules
- Python Classes
- The Python Standard Library
- Debugging Python
- Python variables scope
- Python, accept arguments from command line
- Python Recursion
- Python Nested Functions
- Python Lambda Functions
- Python Closures
- Python Virtual Environments
- Use a GoPro as a remote webcam using Python
- Python, how to create a list from a string
- Python Decorators
- Python Docstrings
- Python Introspection
- Python Annotations