'How to write boolean command line arguments with Python?

I would like to write an argument in an application where the argument that I am calling needs to be referenced on the first iteration/run of the script where the initial_run is set to True. Otherwise this value should be left as false. Now this parameter is configured in a configuration file.

The current code that I written is below. What should be changed in this code to return the True value? Now it only returns the value False.

import sys  
# main
param_1= sys.argv[0:] in (True, False)
print 'initial_run=', param_1


Solution 1:[1]

Running the script from the command line:

# ./my_script.py true

The boolean can be obtined by doing:

import sys

initial_run = sys.argv[1].lower() == 'true'

This way we are doing a comparison of the first argument lowercased to be 'true', and the comparison will return boolean True if the strings match or boolean False if not.

Solution 2:[2]

change

param_1 = sys.argv[0:] in (True, False)

to:

param_1 = eval(sys.argv[1])
assert isinstance(param_1, bool), raise TypeError('param should be a bool')

Solution 3:[3]

Not sure if may help, what about using argparse?

import argparse

def read_cmdline():
    p=argparse.ArgumentParser()
    p.add_argument("-c","--clear",type=bool, choices=[True,False],required=True)
    args=p.parse_args()
    return args 


if __name__=="__main__":
    args=read_cmdline()
    if args.clear:
        ###actions when clear is True
    else:
        ## actions when clear is False

Note the type=bool in add_argument

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Dalvenjia
Solution 2
Solution 3