gwestdev1
gwestdev1

Reputation: 151

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

Upvotes: 14

Views: 26775

Answers (3)

Robert Ribas
Robert Ribas

Reputation: 317

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

Upvotes: 0

Thmei Esi
Thmei Esi

Reputation: 442

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')

Upvotes: 3

Dalvenjia
Dalvenjia

Reputation: 2033

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.

Upvotes: 20

Related Questions