Skip to main content

Command Palette

Search for a command to run...

Build Your Own Python CLI Tool with argparse

Published
2 min read
Build Your Own Python CLI Tool with argparse
A

Passionate Software Developer | Crafting clean code and elegant solutions

Command-line tools are everywhere: git, pip, ls, npm... What if you could build your own?

In this post, you'll learn how to create a custom Python CLI app using argparse. This lets users run your script like a real command:

bashCopyEditpython tool.py greet --name Alice

Let’s build a CLI tool that supports multiple commands like:

  • greet someone

  • add numbers

  • convert Celsius to Fahrenheit

  • version output


🎯 Step 1: Setup the Script

pythonCopyEditimport argparse

parser = argparse.ArgumentParser(
    description="A simple multi-purpose CLI tool in Python"
)
subparsers = parser.add_subparsers(dest="command")

👋 Command: Greet

pythonCopyEditgreet_parser = subparsers.add_parser("greet", help="Say hello to someone")
greet_parser.add_argument("--name", type=str, required=True, help="Name of the person")

➕ Command: Add

pythonCopyEditadd_parser = subparsers.add_parser("add", help="Add two numbers")
add_parser.add_argument("x", type=int)
add_parser.add_argument("y", type=int)

🌡️ Command: Convert Celsius to Fahrenheit

pythonCopyEditconvert_parser = subparsers.add_parser("convert", help="Convert Celsius to Fahrenheit")
convert_parser.add_argument("celsius", type=float)

🧪 Command: Version

pythonCopyEditsubparsers.add_parser("version", help="Show version info")

🧠 Step 2: Handle Commands

pythonCopyEditargs = parser.parse_args()

if args.command == "greet":
    print(f"Hello, {args.name}!")

elif args.command == "add":
    print(f"Sum: {args.x + args.y}")

elif args.command == "convert":
    fahrenheit = (args.celsius * 9/5) + 32
    print(f"{args.celsius}°C = {fahrenheit}°F")

elif args.command == "version":
    print("MyCLI Tool v1.0.0")

else:
    parser.print_help()

🚀 Usage Examples

bashCopyEditpython tool.py greet --name Alice
python tool.py add 5 7
python tool.py convert 30
python tool.py version

💡 Bonus Tips

  • Add choices to restrict input

  • Add default values

  • Use argparse.FileType() to load files

  • Wrap this in if __name__ == "__main__": for reusability


🧵 Wrapping Up

The argparse library turns your Python scripts into professional-looking CLI apps — no need for external dependencies.

✅ It’s ideal for automation, dev tools, data pipelines, or just leveling up your script UX.

Want to make this installable via pip, or upgrade to Typer/Click later? Let me know and we’ll build version 2.0!

More from this blog

D

Dev Insights

26 posts