Command line arguments are basically instructions or inputs given to the program in the terminal or command prompt. This is almost essential for a program which run in the terminal. Its pretty much easy to setup.
Basics on CLI
If you want to use command line argument, you have to work with sys.argv which gives out a list/array containing all the arguments you had passed to the program when running it and to use sys.argv, you will first have to import the sys module.
Basically mapping would be like this
Below is a simple example using sys.argv,
Next thing is to check that the arguments are valid, here easiest thing to check is, right number of arguments are provided when executing the program. For this we can just count the number of arguments and raise error when wrong.
If you start progressing with this, you will come to know that arguments have to be in right order otherwise there would be error or codebase could get complex. So, easiest available option is to import getopt module which parses command line options and parameter list. It can handle the ‘right order’ issue which i had mentioned.
getopt.getopt() takes in 3 arguments,
1st argument, sequence of arguments to be parsed. Input is from sys.argv[1:] (leaving program name)
2nd argument, short-form or single character options. If an option has an argument then that single character option should be followed by colon(:)
like 'x:y:'
3rd argument(optional), long-form option names, verbose. If an option has an argument then that option should be followed by equal sign(=)
like ["help", "period=", ""]
When calling,
Short-form arguments are prefixed with single hypen(eg: python cliargs3.py -x 1 -y 2 3 4 5)
Long-form arguments are prefixed with double hypens(eg: python cliargs2.py --period H)
Below is a simple example using getopt,
You can see the from the output, i had changed option order, but the tuple had the right values.
Now lets write a program which would take arguments from command line and if the arguments are wrong it would use the default. I have highlighted all the important lines