用于自动解析命令行参数的Python库。

argmagiq的Python项目详细描述


阿格玛吉克

argmagiq是一个Python库,允许自动解析命令行参数。 为此,您只需定义一个配置类,该类包含每个用户定义的属性 参数,让argmagiq为您解析它们

安装

argmagiq可以通过pip安装,如下所示:

pip install git+https://github.com/phohenecker/arg-magiq

如何

步骤1:定义配置类

配置类的每个属性(not属性)都有getter setter方法 被认为是一个参数。 请注意,所有参数都被视为选项,即,argmagiq不生成位置参数,并且 考虑过的属性my_property被转换为相应的选项--my-property。 例如,以下代码定义了一个参数--my-property

^{pr2}$

这个代码片段的一个重要细节是getter方法的^{str1}$return type注释,它允许argmagiq 标识用户提供的相应参数和清理值的数据类型。 目前,支持boolintfloat和{}类型。 请注意,除了typing.Optional[X],如果X是任何受支持的类型,则不允许使用泛型类型别名。 最后,注意getter方法的docstring(如果存在的话)在帮助中作为参数的描述打印出来 申请文本。在

注意: 就像Python的argparse包,argmagiq打印自动生成的帮助文本,如果-h或 ^提供了{}。在

步骤2:让argmagiq解析Args

{1}你定义为一个简单的解析^命令,并将其定义为一个

importargmagiqparsed_config=argmagiq.parse_args(YourConfigClass,app_name,app_description)

在这个代码片段中,app_nameapp_description是两个定义应用程序名称的字符串,它们 在其概要(帮助开头的用法说明)中使用,以及对其的描述, 显示为帮助文本的一部分。 parse_args的返回值是YourConfigClass的一个实例,该实例已用提供的值填充 对应的参数。在

注意: 当打印帮助文本时(即,用户提供的-h--help),然后parse_args返回{}。在

默认值

如果参数具有默认值,则必须将其指定为config类的属性。 此类属性的名称必须是相应属性的全大写版本,前缀为DEFAULT_。 例如,下面的代码片段为属性my_property定义了一个默认值(与前面一样,它定义了 参数--my-property):

classYourConfigClass(object):DEFAULT_MY_PROPERTY="blub"...

默认情况下,每个没有默认值的参数都被认为是必需的,如果用户不这样做,则会引发错误 指定相同的。 但是,如果要显式地将没有默认值的参数标记为可选,则可以对 根据@argmagiq.optional的吸气剂方法:

@argmagiq.optional@propertydefmy_property(self)->str:...

从JSON文件读取参数

作为指定参数的另一种方法,如果应用程序需要很多 用户定义的配置,argmagiq允许将它们作为JSON文件提供,如下所示:

$ ./your-app.py -- /path/to/config.json

在本例中,路径/path/to/config.json处的文件指定了应用程序的参数。 请注意,JSON文件必须是使用与 配置类。 例如:

{"my_property":"some value",...}

示例

对于完整的工作示例,请查看 ^{} folder。在

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

推荐PyPI第三方库


热门话题
java中的else if语句返回语法错误   http如何解析从表单到REST Java/Webservice的post请求   java如何在SpringBoot中为RestTemplate编写JUnit测试   java动态检查实例是否实现接口   java在Android中使用ArrayAdaptor时,数据不会显示   根据前序遍历返回二进制树的java方法   Arquillian测试类中的java注入始终为空   用户界面Java Swing自定义控件   java使用CompletableFutures递归地从同一函数的多个调用构建列表   在Java中将“.00”添加到整数BigDecimal   卡夫卡java未知\u主题\u或\u部分错误间歇性   java为什么我的getString()方法总是返回null?   java renameTo无法重命名文件   java为什么我可以强制转换对象?可以用其他对象来完成吗?   带有回写条件的java多根记录器   关于stackoverflow错误的java帮助?   java Websphere消息队列多线程   Java图形窗口/画布未垂直显示完整的六边形网格   java Sakai未在Tomcat服务器中启动