管理json文件中的参数

argson的Python项目详细描述


阿尔格森

来自json的参数

将参数从json配置文件部署到python程序中

安装

pip install argson

python3 setup.py install

当前不支持Python2。应该适用于所有Python3版本。使用python 3.7.1进行测试

基本用法

config/arguments.json

[
  {
    "flags": ["--string-to-print"]
  }
]

config/defaults.json

{
  "string_to_print": "foo"
}

main.py

import argson

arguments = argson.parse_file_and_arguments()
print(arguments.string_to_print)

$ python main.py # -> foo

$ python main.py --string bar # -> bar

文档

argson.parse_file_和_参数

用于自动分析参数文件、自文件和默认文件,生成带有参数文件标志的对象

参数

ArgumentTypeDefaultDescription
config_filestrconfig/arguments.jsonwhere arguments are read
self_filestrconfig/self.jsonconfigurations for argparse.ArgumentParser
defaults_filestrconfig/defaults.jsondefault values for arguments
working_dirstros.getcwd()where the program will look for files to load
no_builtinsboolFalsedisables built-in flags
verboseboolFalsedisables error messages

返回:具有来自config_file标志的属性的对象

argson.parse_config_文件

当需要操作ArgumentParser的实例和要解析的剩余参数数组时使用

参数:与argson.parse_file_and_arguments

相同

返回:tuple[argumentparser,list[string]]。ArgumentParser的实例和要分析的其余参数的列表。如果像argument_parser, remaining_args = argson.parse_config_file()那样分配返回值,那么可以像arguments = argument_parser.parse_args(remaining_args)中那样解析剩余的参数,这基本上就是parse_file_and_arguments所做的。

config_文件

一个json文件,包含至少有一个名为flags的键的对象数组。这些是在以--开头的“连字符大小写”中调用程序时使用的标志,如示例中所示。可以传递额外的键来表示用--help调用程序时将显示的标志行为或帮助字符串。这些属性可以传递给ArgumentParser.add_argument

self_文件

包含主ArgumentParser实例信息的JSON文件。这些属性与argparse.ArgumentParser支持的属性相同

defaults\u文件

具有snake_case中标志的默认值的json文件。也就是说,如果参数具有标志string-to-parse,则默认值必须读取为string_to_parse。请参阅上面的示例。

为什么要分离配置文件和默认文件?

最好是分离这些文件,这样我们就可以通过编程选择默认的源代码,为标志保持相同的配置。当部署在开发环境和生产环境中运行时具有不同默认值的脚本时,这有时是必要的。

贡献

  • 分叉并克隆此回购协议
  • 安装pipenv
  • pipenv install
  • 编码为没有明天
  • 提交PR
  • 是吗??
  • 我们一起获利

公开征求意见!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java限制C++代码访问JNI中的某些类   Android上的java DateFormat:不可解析的日期   通过json进行java迭代,并为其他请求调用多个API   Netbeans中的java JavaFX项目引发异常“输入流不能为null”   多线程Java newFixedThreadPool解释   |在java字符串中无法识别。split()方法   Java中的原始包装器类是否被视为引用类型?   Java swing。如何在intellij idea GUI设计工具中重写组件方法   数组乘矩阵   java将30GB的XML文件分割成小块XML   java通过一棵树递归找到一个节点,并返回指向该节点的路径   java如何将可观察的<Observable<List<T>>转换为可观察的<List<T>>   使用java在web服务器上更改php文件中的字符串?   java希望开发像tomcat这样的servlet容器   java希望提高编程的数学技能