Python脚本如何将命令行输入的1和0转换为布尔值True或False
问题根因
sys.argv 读取到的所有命令行输入参数都是字符串类型,Python 规则中只要是非空字符串,执行bool()转换时都会返回True。你传入的0本质是字符串'0',属于非空字符串,所以转换后得到的是True,不符合数值逻辑下0对应False的预期。
修复方案
适配当前传入0/1参数的最简方案
先将参数字符串转换为整数,再转换为布尔值即可,修改后代码如下:
import sys def main(option1, option2, option3): # do something if __name__ == '__main__': option1 = bool(int(sys.argv[1])) option2 = bool(int(sys.argv[2])) option3 = bool(int(sys.argv[3]))
更通用的健壮方案
如果需要支持true/false、yes/no等多种布尔输入格式,可以单独写一个转换函数处理:
import sys def str_to_bool(input_str: str) -> bool: # 统一格式化输入后判断 format_str = input_str.strip().lower() return format_str in ('1', 'true', 'yes', 'on') def main(option1, option2, option3): # do something if __name__ == '__main__': option1 = str_to_bool(sys.argv[1]) option2 = str_to_bool(sys.argv[2]) option3 = str_to_bool(sys.argv[3])
内容的提问来源于stack exchange,提问作者deblue
相关产品推荐
相关产品推荐

