Key-Value CLI Arguments in Python


If you have a CommandLine application (CLI) written in Python, you have a number of ways that you can take arguments from the user.

You could take the order from the user and assign those to variables:

import sys
print( sys.argv )

This will give you a list of all the space separated values.

So if your app is called like:

python app.py var1 var2
# ['app.py', 'var1', 'var2']

As you can see, sys.argv is a list and the arguments start from the second index location.

print( sys.argv[1] )
# var1

How can we use Key-Value Arguments instead?

What if our app’s user decides to swap the order of var1 and var2? Or if they miss something out?

How about we give them a key as well?

python app.py var1=someValue var2=someOtherValue

That seems nicer, but how do we implement this in code?

import sys

kw_dict = {}
for arg in sys.argv[1:]:
    if '=' in arg:
        sep = arg.find('=')
        key, value = arg[:sep], arg[sep + 1:]
        kw_dict[key] = value

We now have a dictionary that contains each of the key-value pairs.