在python程序中,如何在命令行中传递布尔(bool)类型参数, 并在程序中解析使用? 在python中通常使用argparse进行参数解析, 常用的实现有以下几种方式。
1. 布尔类型参数以字符串形式传递,例如”true”或”false”。
示例程序program.py
如下:
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
如下:
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
如下:
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
如下:
import argparse
def parse_boolean_argument(arg):
if isinstance(arg, bool):
return arg
if isinstance(arg, str):
return arg.lower() == 'true'
if isinstance(arg, int):
return bool(arg)
raise ValueError("Invalid argument type. Expected bool, str, or int.")
# 创建命令行解析器
parser = argparse.ArgumentParser(description='Boolean argument example')
# 添加参数选项
parser.add_argument('--flag', 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