在python程序中,如何在命令行中传递布尔(bool)类型参数,
并在程序中解析使用? 在python中通常使用argparse进行参数解析,
常用的实现有以下几种方式。
1.
布尔类型参数以字符串形式传递,例如"true"或"false"。
示例程序program.py如下:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 
 | import argparse
 
 parser = argparse.ArgumentParser(description='Boolean argument example')
 
 
 parser.add_argument('--flag', type=str, default='false', help='A boolean flag')
 
 
 args = parser.parse_args()
 
 
 flag = args.flag.lower() == 'true'
 
 
 if flag:
 print("The flag is set to True.")
 else:
 print("The flag is set to False.")
 
 | 
执行命令:python program.py --flag true
2.
布尔类型参数以Int形式传递,例如"1"或"0"。
示例程序program.py如下:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 
 | import argparse
 
 parser = argparse.ArgumentParser(description='Boolean argument example')
 
 
 parser.add_argument('--flag', type=int, default=0, help='An integer flag (0 or 1)')
 
 
 args = parser.parse_args()
 
 
 flag = bool(args.flag)
 
 
 if flag:
 print("The flag is set to True.")
 else:
 print("The flag is set to False.")
 
 | 
执行命令:python program.py --flag 1,
类似字符串传递,1表示True,0表示False
3.
布尔类型参数以无参数方式(指定action)传递,例如设置了。
示例程序program.py如下:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 
 | import argparse
 
 parser = argparse.ArgumentParser(description='Boolean argument example')
 
 
 parser.add_argument('--flag', action='store_true', help='A boolean flag')
 
 
 args = parser.parse_args()
 
 
 if args.flag:
 print("The flag is set to True.")
 else:
 print("The flag is set to False.")
 
 | 
执行命令:python program.py --flag,
结果中加上--flag表示True, 不加表示False。
4. 混合方式,
同时支持以上3种方式
示例程序program.py如下:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 
 | import argparse
 def parse_boolean_argument(arg):
 if isinstance(arg, bool):
 print(f"bool {arg}")
 return arg
 if isinstance(arg, str):
 print(f"str {arg}")
 return arg.lower() in ('true', 'y', '1', 'yes')
 if isinstance(arg, int):
 print(f"int {arg}")
 return bool(arg)
 raise ValueError("Invalid argument type. Expected bool, str, or int.")
 
 
 parser = argparse.ArgumentParser(description='Boolean argument example')
 
 
 parser.add_argument('--flag', nargs='?', const=True, type=parse_boolean_argument, default=False, help='A boolean flag')
 
 
 args = parser.parse_args()
 
 
 if args.flag:
 print("The flag is set to True.")
 else:
 print("The flag is set to False.")
 
 | 
同时支持以下三种命令都表示true: *
python program.py --flag true *
python program.py --flag 1 *
python program.py --flag
2. 参考材料