Python的标准库包含用于配置文件解析(configparser),环境变量读取(os.environ)和命令行参数解析(argparse)的模块.我想写一个程序来完成所有这些,还有:
有一系列选项值:
允许在命令行上指定的一个或多个配置文件位置,例如--config-file foo.conf,并读取(通常配置文件的替代或补充).这仍然必须遵守上述级联.
允许在一个位置使用选项定义来确定配置文件和命令行的解析行为.
将解析的选项统一到一个选项值集合中,以便程序的其余部分可以访问,而无需关心它们来自何处.
我需要的一切显然都在Python标准库中,但它们并不能顺利地协同工作.
如何以最小的Python标准库偏差实现这一目标?
python environment-variables configuration-files command-line-arguments
我想知道如何使用python的argparse模块从命令行和文本文件中读取参数.我知道argparse的,fromfile_prefix_chars但这不是我想要的.我想要这个行为,但我不想要语法.我想要一个如下所示的界面:
$ python myprogram.py --foo 1 -A somefile.txt --bar 2
Run Code Online (Sandbox Code Playgroud)
当argparse看到-A时,它应该停止从sys.argv或我给它的任何东西读取,并调用我写的函数,它将读取somefile.text并返回一个参数列表.当文件用尽时,它应该继续解析sys.argv或其他什么.重要的是文件中的参数处理顺序发生(即:应该处理-foo,然后处理文件中的参数,然后是-bar,以便文件中的参数可以覆盖--foo,和 - bar可能会覆盖文件中的内容).
这样的事情可能吗?我可以编写一个自定义函数,将新参数推送到argparse的堆栈上,或者是那种效果吗?