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