The Best Way to Make Command-line Interfaces in Python

How to write easy-to-use, intuitive Python programs

Ahad Sheriff


Command-line interface (CLI):

A command-line interface or command language interpreter, also known as a command-line user interface, console user interface and character user interface, is a means of interacting with a computer program where the user issues a command to the program in the form of successive lines of text.

You can make your program powerful and interactive by creating a command-line interface (CLI). A CLI allows you to take in command-line arguments (information that follows the program’s name on the command line of the operating system) to add additional features to your program, making your code both easy to use and flexible. Depending on the program, these arguments can be used to add additional features such as viewing help documentation, specifying an output file, or enabling test features that may be buggy for normal use.

When I first started programming in Python, I almost exclusively collected user input interactively like this:

def main():
first = input(“Enter your first name:”)
last = input(“Enter your last name:”)
print(first + ' ' + last)

While this code is fine for simple scripts, it is problematic for a few reasons. For starters, this code is not flexible. When a user runs this program, they are restricted to only a single set of defined rules. For example, what if instead of printing to the console, I wanted to log output to a text file? As a new user, how do I figure out how the program works? As a developer, you can create a command-line interface to offer a solution to these problems.

Important considerations

When creating a CLI, it is important to consider the following:

  1. Required arguments: What arguments are absolutely necessary in order for the program to run? For example, if I am writing a program to scrape a webpage a required argument could be the page’s domain.
  2. Documentation: It is important to write out the function of each option and argument so that a new user can figure out how your program works.
  3. Handle error cases: Let…