October 19, 2024

Incorrect Usage

Below code looks natural implementation, but it is actually, does not work.

Even if you pass true from arguments ‘python script.py –boolean True’, the script won’t take so.

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description='description should be written here'
    )
    parse.add_argument(
        '--boolean', '-B', type=bool, default=True, help=''
    )
    args = parser.parse_args()

Example

Here is one of implementation, basically, it is better to pass a function to

import argparse

def str2bool(value):
    if isinstance(value, bool):
        return value
    elif value.lower() in ('true', 't'):
        return True
    elif value.lower() in ('false', 'f'):
        return False
    else:
        raise argparse.ArgumentTypeError('Boolean values is expeted')

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description='description should be written here'
    )
    parse.add_argument(
        '--boolean', '-B', type=str2bool, default=True, help=''
    )
    args = parser.parse_args()
    args_dict = vars(args)