argparse包装器允许基于类的层次嵌套参数

paramparse的Python项目详细描述


python argparse包装器,允许基于类的层次嵌套参数适用于自动代码分析,特别是在Pycharm中。 它还提供了一个统一的参数规范协议,可用于通过文本文件和命令行提供参数值。

请参考一个大型多目标跟踪项目的包含参数框架,此包中包含的功能最初是为该项目开发的。 它提供了一个具有深度嵌套和共享模块的高度模块化项目的优秀示例。

例如,这是本例中模块嵌套的较深实例之一:

Params->Trainer->Target->Templates->Siamese->SiamFC->DesignParams

此配置的参数可以提供为:

trainer.target.templates.siamese.siamfc.design.exemplar_sz=150

为深度嵌套的模块指定多个参数可能会很快变得很麻烦,特别是在命令行中。 因此,该包提供了一种使用@标识符对同一模块中的参数进行分组的方法。 在example/cfg/params.cfg中提供了一个示例。 请注意,此文件中使用的缩进只是为了便于人工分析,不需要缩进,因为此分组系统也可以从命令行工作。 示例命令位于example/commands.md

@标识符指定要添加到所有后续参数的前缀pf,以便arg_name被视为pf.arg_name。 假设pf = name1.name2,支持以下类型:

@name: pf = name
@: pf = <empty>

@@name: pf = name1.name2.name

@@@name: pf = name1.name
@@@: pf = name1

包的使用非常简单,涉及调用paramparse.process,如example/main.py所示

它还提供了三个转换器函数{{8CD>}、^ {CD9>}和^ {CD10>},它们可以从现有参数中创建一个与此包兼容的参数类,该参数在^ {CD11>}和^ {}格式中或使用函数的关键字参数。 生成的类代码要么写入python源文件,该文件的名称可以指定为第二个参数(默认为Params.py),要么复制到剪贴板(如果提供了to_clipboard=1)(需要pyperclip)。

process函数根据每个参数的默认值进行类型推断,但如果默认值为None,则还支持从restructuredText/pycharm类型docstring(由转换器函数生成)提取类型

Noteparamparse使用保留参数cfg指定包含参数值的文本文件的路径。 如果要转换为^ {CD16> }类的现有的AgPARSE或DICT对象已经具有用于其他目的的^ {< CD17> }字段,它将与解析器冲突,所以请在转换之前或之后重命名该字段,但在运行^ {< CD7> }之前。

转换器函数的用法在example/utils_demo.py

从example文件夹运行python3 main.py --h,查看argparse生成的分层帮助文档。

除了层次嵌套和参数分组之外,paramparse的一个重要实用程序是基于类的表示,它允许在pycharm之类的ide中进行自动化的代码分析、导航和重构,而使用vanillaargparse.ArgumentParserdict是不可能的。

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

推荐PyPI第三方库


热门话题
java线程执行器服务   aspose如何通过java获得单词bookmark之前的所有文本内容?   一对一映射的java Hibernate合并问题   java SOAP XSD根元素问题   java如何保护我的Spring启动API   java使用GeoJson向google地图添加标记   java安卓:在SQLite中没有这样的列   java STS 2.8.0 StartExplorer/Legacy插件安装问题   java如何以编程方式获取AppBar高度?   在Java中将BigDecimal添加到BigDecimal   java不支持ntdll。dll是windows xp和windows vista的标准配置吗?   内容类型为application/xwwwformurlencoded的java Http Put请求在Spring中不起作用   java在数组中计算工资并返回答案   java数字/货币格式   elasticsearch java api中的弹性搜索查询