Lazy Python Argument Parsing

Link post

When I’m writing real Python programs I use argparse. When I’m writing quick scripts, I destructure sys.argv[1:]. For example:

width, depth, height = sys.argv[1:]
…

Or, if I need to import the file:

def start(width, depth, height):
  …

if __name__ == ‘__main__’:
  start(*sys.argv[1:])

This is a very simple way of handling positional arguments. It ignores sys.argv[0] which is likely the name of the script, and then assigns the remaining arguments to the variables. If I provide the wrong number of arguments it’s a bit shouty, but it’s clear enough for a quick script and does remind me of the intended arguments:

Traceback (most recent call last):
  File “example.py”, line 2, in 
    width, depth, height = sys.argv[1:]
ValueError: too many values to unpack (expected 3)

Comment via: facebook