我想使用argparse来解析写为"--foo True"或"--foo False"的布尔命令行参数.例如:
my_program --my_boolean_flag False
Run Code Online (Sandbox Code Playgroud)
但是,以下测试代码不能满足我的要求:
import argparse
parser = argparse.ArgumentParser(description="My parser")
parser.add_argument("--my_bool", type=bool)
cmd_line = ["--my_bool", "False"]
parsed_args = parser.parse(cmd_line)
Run Code Online (Sandbox Code Playgroud)
可悲的是,parsed_args.my_bool评估为True.这种情况即使我改变cmd_line为["--my_bool", ""],这是令人惊讶的,因为bool("")重新评估False.
如何让argparse解析"False","F"以及它们的小写变体False?
Python的标准库包含用于配置文件解析(configparser),环境变量读取(os.environ)和命令行参数解析(argparse)的模块.我想写一个程序来完成所有这些,还有:
有一系列选项值:
允许在命令行上指定的一个或多个配置文件位置,例如--config-file foo.conf,并读取(通常配置文件的替代或补充).这仍然必须遵守上述级联.
允许在一个位置使用选项定义来确定配置文件和命令行的解析行为.
将解析的选项统一到一个选项值集合中,以便程序的其余部分可以访问,而无需关心它们来自何处.
我需要的一切显然都在Python标准库中,但它们并不能顺利地协同工作.
如何以最小的Python标准库偏差实现这一目标?
python environment-variables configuration-files command-line-arguments
我正在尝试使用argparse模块.我正在处理2个配置文件:
1.default cfg文件2.用户提供的文件.
如果在运行时未提供文件,请从默认文件中读取.如果用户提供文件,请使用提供的文件的内容.
我的问题是:我想default为每个提供字段parser.add_agument,所以如果它不是由用户提供的,它将始终具有一些默认值.可以从任一文件(即默认或用户指定的文件)中读取这些值.我需要检查提供的文件然后from default/user-given-file import *
我的代码:
get_args.py
class GetArgs:
def get_args(self):
parser = argparse.ArgumentParser(description='foo')
#
parser.add_argument(
'-c', '--config', type=str, help='Provide a file',
required=False, default='settings.cfg')
#now note that below "default=version" will be from either "settings.cfg" or "user given file"
# here may be i need to import from file ?
parser.add_argument(
'-v','--version', type=str, help='API version', required=False, default=version)
args = parser.parse_args()
# Assign args to variables
config=args.config
version = args.version
retutn config,version …Run Code Online (Sandbox Code Playgroud)