Reputation: 151
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
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
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
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