pythonbeginner
Python CLI Tool with Argparse
Build a command-line tool with subcommands, arguments, validation, and help text using argparse.
pythonPress ⌘/Ctrl + Shift + C to copy
import argparse
import sys
def cmd_init(args: argparse.Namespace) -> None:
print(f"Initializing project '{args.name}' with template '{args.template}'")
def cmd_build(args: argparse.Namespace) -> None:
mode = "production" if args.production else "development"
print(f"Building in {mode} mode, output: {args.output}")
if args.verbose:
print("Verbose logging enabled")
def cmd_deploy(args: argparse.Namespace) -> None:
print(f"Deploying to {args.target} environment")
if args.dry_run:
print("DRY RUN — no changes will be made")
def main() -> int:
parser = argparse.ArgumentParser(
prog="mytool",
description="Project management CLI tool",
)
parser.add_argument("-v", "--verbose", action="store_true", help="Enable verbose output")
parser.add_argument("--version", action="version", version="%(prog)s 1.0.0")
subparsers = parser.add_subparsers(dest="command", required=True)
# init subcommand
init_parser = subparsers.add_parser("init", help="Initialize a new project")
init_parser.add_argument("name", help="Project name")
init_parser.add_argument("-t", "--template", default="default", choices=["default", "api", "web"])
init_parser.set_defaults(func=cmd_init)
# build subcommand
build_parser = subparsers.add_parser("build", help="Build the project")
build_parser.add_argument("-o", "--output", default="dist", help="Output directory")
build_parser.add_argument("-p", "--production", action="store_true")
build_parser.set_defaults(func=cmd_build)
# deploy subcommand
deploy_parser = subparsers.add_parser("deploy", help="Deploy the project")
deploy_parser.add_argument("target", choices=["staging", "production"])
deploy_parser.add_argument("--dry-run", action="store_true")
deploy_parser.set_defaults(func=cmd_deploy)
args = parser.parse_args()
args.func(args)
return 0
if __name__ == "__main__":
sys.exit(main())Use Cases
- Building developer tooling CLIs
- Project scaffolding and automation scripts
- Deployment and build management tools
Tags
Related Snippets
Similar patterns you can reuse in the same workflow.
pythonbeginner
CLI Tool with argparse
Build a professional CLI tool with subcommands, typed arguments, environment variable fallbacks, and help text.
Best for: Developer tooling
#cli#argparse
pythonintermediate
Argparse Parser
Advanced Python pattern: argparse-parser
Best for: advanced programming
#python#advanced
pythonadvanced
Python ETL Pipeline Example
Complete extract-transform-load pipeline with error handling, logging, and incremental processing.
Best for: Automating data ingestion from CSV to warehouse
#etl#pipeline
pythonbeginner
Dataclass with Validation
Python dataclass with __post_init__ field validation, type coercion, and descriptive error messages.
Best for: Data transfer objects
#dataclass#validation