在使用 argparse
传递bool型参数的时候发现无论传入True还是False,参数变量最后都是True。
1 | parser.add_argument("--cpu", type = bool, default = True, |
查资料后才发先 argparse
支持对bool型的直接传参,需要用别的方法处理一下。
解决方法1:采用action传递bool型
1 | parser.add_argument("--cpu", action= "store_true", |
采用action方法的特点就是传参时输入 --cpu
则为True,不输入则为False
1 | python test.py --cpu # cpu项为True |
解决方法2:采用转换函数传递bool型
此方法是从网上看到的。通过写一个转换函数,使命令行传入的 string
型转化为 bool
型:
1 | def str2bool(v): |
这时只要
1 | parser.add_argument("--cpu", type = str2bool, default = True, |
就可以正常传递bool型了。