用于自动解析命令行参数的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确认RabbitMQ消息?   格式化如何在Java中打印小数点后两位的浮点?   php E/JSON解析器:解析数据组织时出错。json。JSONException:java类型的值<br。无法将lang.String转换为JSONObject   java从PaintComponent中访问对象方法   java在自定义集中添加重复项   java how get会话。Mockito中的getAttribute()   java GWT、智能GWT、GWText比较   当有两个安全上下文时,JavaSpring安全性使用了错误的安全上下文   从JAVA文件调用JAVA文件时出现多线程问题   java程序中的客户机-服务器更新程序   不同类的java Log4J记录器   Java编译器错误变量已定义   java计时器和计时器任务周期错误   java如何通过webview将angular 12应用程序加载到Android应用程序中?