๐ป Argparse CLI
The argparse module makes it easy to write user-friendly command-line interfaces.
Mastering this concept will significantly boost your Python data science skills!
๐ป Code Example:
import argparse import sys def build_parser() -> argparse.ArgumentParser: parser = argparse.ArgumentParser( prog="pynfinity-cli", description="Pynfinity command-line tool โ Python learning platform", epilog="See https://pynfinity.com for full docs", formatter_class=argparse.RawDescriptionHelpFormatter, ) parser.add_argument("--version", action="version", version="%(prog)s 1.0.0") subparsers = parser.add_subparsers(dest="command", help="Sub-command help") # โโ pebbles sub-command โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ peb_cmd = subparsers.add_parser("search", help="Search pebbles") peb_cmd.add_argument("query", help="Search query (e.g., 'python regex')") peb_cmd.add_argument("--limit", "-l", type=int, default=5, metavar="N", help="Max results (default: 5)") peb_cmd.add_argument("--format", choices=["table", "json", "plain"], default="table", help="Output format") peb_cmd.add_argument("--verbose", "-v", action="store_true", help="Show full pebble content") # โโ score sub-command โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ score_cmd = subparsers.add_parser("score", help="Get user score") score_cmd.add_argument("username", help="Pynfinity username") score_cmd.add_argument("--course", "-c", default="all", choices=["python", "ai", "devops", "all"], help="Course filter (default: all)") score_cmd.add_argument("--export", "-o", type=argparse.FileType("w"), default=sys.stdout, metavar="FILE", help="Export results to file") # โโ generate sub-command โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ gen_cmd = subparsers.add_parser("generate", help="Generate new pebble MD") gen_cmd.add_argument("--title", required=True, help="Pebble title") gen_cmd.add_argument("--author", default="santoshtvk") gen_cmd.add_argument("--tags", nargs="+", metavar="TAG", help="Space-separated tags: --tags python regex") return parser def main(): parser = build_parser() args = parser.parse_args() if args.command == "search": print(f"Searching '{args.query}' (limit={args.limit}, fmt={args.format})") if args.verbose: print("[Verbose] Showing full pebble content") elif args.command == "score": args.export.write(f"Score for @{args.username}, course={args.course}\n") elif args.command == "generate": print(f"Generating pebble: '{args.title}' by {args.author}") print(f"Tags: {args.tags}") else: parser.print_help() if __name__ == "__main__": main() # Usage: # python pynfinity_cli.py search "python decorators" --limit 10 --format json # python pynfinity_cli.py score santoshtvk --course python # python pynfinity_cli.py generate --title "FastAPI Middleware" --tags python api pynfinity
Keep exploring and happy coding! ๐ป