Python24 min read
Python Command Line Arguments
Build real command-line tools by reading arguments, adding help text, validating input, and supporting flags using argparse like professional scripts.
David Miller
September 13, 2025
10.0k216
Command-line arguments let you run a Python program with inputs like:
`python script.py input.txt --verbose`
This is used in:
- automation scripts
- DevOps tasks
- data processing tools
- CLI utilities
## Option 1: sys.argv (simple but limited)
```python
import sys
print("Script:", sys.argv[0])
print("Args:", sys.argv[1:])
```
Run:
```bash
python script.py hello world
```
## Option 2: argparse (recommended for real tools)
```python
import argparse
parser = argparse.ArgumentParser(description="Process some data")
parser.add_argument("name", help="Your name")
parser.add_argument("--age", type=int, help="Your age")
parser.add_argument("--city", default="Austin", help="Your city")
args = parser.parse_args()
print(args.name, args.age, args.city)
```
Run:
```bash
python script.py Tom --age 25 --city Miami
```
## Flags (true/false switches)
```python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--verbose", action="store_true", help="Verbose output")
args = parser.parse_args()
if args.verbose:
print("Verbose mode ON")
```
## Choices validation
```python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--format", choices=["json", "xml", "csv"], default="json")
args = parser.parse_args()
print("Format:", args.format)
```
## Graph: CLI execution flow
```mermaid
flowchart LR
A[User runs command] --> B[argparse parses args]
B --> C[Validate + defaults]
C --> D[Your program logic]
D --> E[Output result]
```
## Remember
- sys.argv is quick but basic
- argparse is best for real tools
- Provide help text and defaults
- Use choices and types for validation
#Python#Advanced#CLI