Thursday 23 August 2018

Python - Creating a Command Line Argument (argparse)


For those who often use the Terminal on Linux or cmd on Windows, they will often come into contact with the Command Line for example

$ cd -h
$ sudo apt-get -h
$ dpkg --help
$ arp -a


With python we can create programs to run on the terminal. Example :

import argparse #module
def server_start (server, port):
    print "Starting% s ... OK"% server
    print "% s port:% s"% (server, port)
    
def db_start (db, port):
    print "Starting% s ... OK"% db
    print "% s port:% s"% (db, port)
def main ():
    
    #create Instance parser
    parser = argparse.ArgumentParser (description = "Program start Server")
    
    parser.add_argument (
        "--server",
        type = str,
        required = True,
        help = "Your Server (apache, nginx etc)"
    )
    
    parser.add_argument (
        "--server_port",
        type = int,
        default = 80,
        help = "Your Server port"
    )
    
    parser.add_argument (
        "- db",
        type = str,
        required = True,
        help = "Your Database (mysql, oracle etc)"
    )
    
    parser.add_argument (
        "--db_port",
        type = int,
        default = 3060,
        help = "Your Database port"
    )
        # make the parser
    args = parser.parse_args ()
        #call function
    server_start (args.server, args.server_port)
    db_start (args.db, args.db_port)
if __name__ == '__main__':
    play ()
when we create a program / parser code, then by default we can use the -h command or --help to display help

$ python parser.py -h
or

$ python parser.py --help
then the output

Server start program
optional arguments:
  -h, --help show this help message and exit
  - server SERVER Your Server (apache, nginx etc)
  --db DB Your Database (mysql, oracle etc)
note that according to the coding code, our Command Line program

requires two arguments, namely - server and - db

If we run the program without any argument

$ python parser.py
then the message will appear as follows

usage: parser.py [-h] --server SERVER --db DB
parser.py: error: --server argument is required
With the code we make as above we require the User to

use the Command line as follows:

$ python parser.py --server = apache --server_port 81 --db mysql --db_port = 3030
or (without using = operator)

$ python parser.py - server apache --server_port 81 --db mysql --db_port 3030


Command Line Argument Details
In general, to make our arguments go in the following ways:

1. Positional Command line argument

   p.add_argument ("input_dir", ...)
   p.add_argument ("input_dir", "output_dir" ...)
   This means that the input_dir argument must be in the first position

   and then output_dir must be in the second position. so we have to

   run terminal like this:

  # $ python example.py {path / to / input} {path / to / output}
  $ python example.py / home / image / original / home / image / copy


2. Optional command line argument

    Because of Optional, we can place our arguments anywhere

    during execution. Therefore Optional Arguments must be added

    "-" or "-" sign

    Example:

$ python parser.py --db = mysql --db_port = 3021 --server = apache --server_port = 81
    note that the position is free (unlike the previous example)

In the example above we also see all the arguments using the "-" mark that actually means the Command length. we can short it by adding an argument marked "-"

parser.add_argument (
        
        "-s",
        "--server",
        type = str,
        required = True,
        help = "Your Server (apache, nginx etc)"
    )
- server can we rename or shorten with -s so the execution can be like this

python parser.py -s = apache --server_port 81 --db mysql --db_port = 3030
It's the same as shortened --help with -h



Parser Attribute
parser.add_argument (
    "--server",
    type = str,
    required = True,
    help = "Your Server (apache, nginx etc)"
)
in the example above type, required, help is an Attribute. Here are the main attributes

which is often used in .add_argument ()

  help

    help is a String that we can use for additional information on an Argument.

    highly recommended to add this attribute to make it easier for users to use

    Command that we make. Can be accessed by default with the -h or --help command

  required

    If we feel an argument is mandatory, it can use this attribute.

    required = True

    if we are set required, then we only use type 2 taitu Optional command line argument

    because the Positional Argument is certainly compulsory.

  type

    type is the data type of the Argument value. the most common are: int, float, str.

    type = str

  action

    Explain what will happen if a particular argument is executed. usually will

    save certain values. Yes

Share this


0 Comments