Command Line Arguments¶
The argparse module provides a way to parse command-line arguments passed to Python scripts.
Basic Usage¶
import argparse
parser = argparse.ArgumentParser(description='A simple calculator')
parser.add_argument("num1", type=float, help="First number")
parser.add_argument("num2", type=float, help="Second number")
args = parser.parse_args()
print(f"Sum: {args.num1 + args.num2}")
Run:
python script.py 5 3
# Sum: 8.0
Positional Arguments¶
Positional arguments are required and parsed in order.
import argparse
def calculate(x, y, op):
if op == "+": return x + y
if op == "-": return x - y
if op == "*": return x * y
if op == "/": return x / y
parser = argparse.ArgumentParser(description='Calculator')
parser.add_argument("num1", type=float, help="First number")
parser.add_argument("num2", type=float, help="Second number")
parser.add_argument("op", help="Operation: +, -, *, /")
args = parser.parse_args()
result = calculate(args.num1, args.num2, args.op)
print(f"Result: {result}")
Run:
python script.py 10 5 +
# Result: 15.0
Keyword (Optional) Arguments¶
Use - or -- prefix for optional arguments.
import argparse
parser = argparse.ArgumentParser(description='Calculator')
parser.add_argument("-x", "--num1", type=float, default=0, help="First number")
parser.add_argument("-y", "--num2", type=float, default=0, help="Second number")
parser.add_argument("-o", "--op", default="+", help="Operation")
args = parser.parse_args()
Run:
python script.py # Uses defaults
python script.py -x 10 -y 5 # num1=10, num2=5, op="+"
python script.py --num1 10 --num2 5 # Same as above
python script.py -x 10 -y 5 -o "*" # Multiplication
Default Values¶
parser.add_argument("-n", "--name", default="World", help="Name to greet")
If not provided, args.name will be "World".
Type Conversion¶
By default, arguments are strings. Use type= to convert:
parser.add_argument("count", type=int)
parser.add_argument("--rate", type=float, default=0.1)
Boolean Flags¶
Use action="store_true" for boolean flags:
parser.add_argument("-v", "--verbose", action="store_true", help="Verbose output")
Run:
python script.py # args.verbose = False
python script.py -v # args.verbose = True
python script.py --verbose # args.verbose = True
Help Text¶
argparse automatically generates help:
python script.py --help
Output:
usage: script.py [-h] [-x NUM1] [-y NUM2] [-o OP]
Calculator
optional arguments:
-h, --help show this help message and exit
-x NUM1, --num1 NUM1 First number
-y NUM2, --num2 NUM2 Second number
-o OP, --op OP Operation
Complete Example¶
import argparse
def calculate(x, y, op):
operations = {
"+": x + y,
"-": x - y,
"*": x * y,
"/": x / y if y != 0 else None
}
return operations.get(op)
def main():
parser = argparse.ArgumentParser(description='Simple calculator')
# Optional arguments with defaults
parser.add_argument("-x", "--num1", type=float, default=1.0,
help="First number (default: 1.0)")
parser.add_argument("-y", "--num2", type=float, default=2.0,
help="Second number (default: 2.0)")
parser.add_argument("-o", "--op", default="+",
help="Operation: +, -, *, / (default: +)")
args = parser.parse_args()
result = calculate(args.num1, args.num2, args.op)
if result is not None:
print(f"{args.num1} {args.op} {args.num2} = {result}")
else:
print("Error: Division by zero")
if __name__ == "__main__":
main()
The args Namespace¶
parse_args() returns a Namespace object:
args = parser.parse_args()
print(args) # Namespace(num1=10.0, num2=5.0, op='+')
# Access as attributes
print(args.num1) # 10.0
print(args.op) # '+'
Common Patterns¶
Required Optional Argument¶
parser.add_argument("-f", "--file", required=True, help="Input file")
Choices¶
parser.add_argument("-o", "--op", choices=["+", "-", "*", "/"],
default="+", help="Operation")
Multiple Values¶
parser.add_argument("files", nargs="+", help="Input files")
# Usage: python script.py file1.txt file2.txt file3.txt
Summary¶
| Feature | Syntax |
|---|---|
| Positional | parser.add_argument("name") |
| Optional | parser.add_argument("-n", "--name") |
| Type | type=int, type=float |
| Default | default=value |
| Required | required=True |
| Boolean | action="store_true" |
| Choices | choices=["a", "b", "c"] |
| Help | help="Description" |