在python程序中,如何在命令行中传递布尔(bool)类型参数,
并在程序中解析使用? 在python中通常使用argparse进行参数解析,
常用的实现有以下几种方式。
1.
布尔类型参数以字符串形式传递,例如"true"或"false"。
示例程序program.py
如下:
1 2 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
如下:
1 2 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
如下:
1 2 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
如下:
1 2 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. 参考材料