不费吹灰之力的参数分析器

defopt的Python项目详细描述


defopt是一个轻量级的、不费吹灰之力的参数解析器。

除雾将:

  • 允许从代码和命令行运行函数而无需修改
  • 奖励您记录您的功能
  • 避免编写、测试和维护参数解析代码

除雾不会:

  • 以任何方式修改功能
  • 允许您构建高度复杂或自定义的命令行工具

如果希望完全控制命令行的外观或行为,请尝试 docoptclickargh。如果您只想编写python代码并将 命令行界面到其他人,defopt是给你的。

用法

一旦编写并documented函数,只需将其传递给 defopt.run()完成。

import defopt

def main(greeting, *, count=1):
    """Display a friendly greeting.

    :param str greeting: Greeting to display
    :param int count: Number of times to display the greeting
    """
    for _ in range(count):
        print(greeting)

if __name__ == '__main__':
    defopt.run(main)

注意

在python 2上,如果没有只包含关键字的参数,则应该传递 strict_kwonly=Truedefopt.run。否则,count将被转换 变成一个可选的位置参数。

参数和函数本身的描述用于构建 提供信息的帮助消息。

$ python test.py -h
usage: test.py [-h] [-c COUNT] greeting

Display a friendly greeting.

positional arguments:
  greeting              Greeting to display

optional arguments:
  -h, --help            show this help message and exit
  -c COUNT, --count COUNT
                        Number of times to display the greeting
                        (default: 1)

现在可以从python和命令行以相同的方式调用函数。

>>> from test import main
>>> main('hello!', count=2)
hello!
hello!
$ python test.py hello! --count 2
hello!
hello!

哲学

除雾器的开发遵循以下指导原则:

  1. 接口在几秒钟内就可以完全理解。如果需要更长的时间, 你的时间会更好地学习一个更灵活的工具。
  2. < L>>{ STR 1 } $所学的任何东西都适用于现有的生态系统。< /强>完全相同。 defopt使用的docstring也由sphinx的autodoc扩展用于 生成文档,并通过ide进行类型检查。很可能是你 你已经知道了所有你需要知道的东西。
  3. 一切都为您处理。如果您使用的是defopt,那是因为 根本不想编写任何解析代码的参数。你可以相信它 为函数构建逻辑一致的命令行接口 不需要配置。
  4. 您的python函数永远不会被修改。类型转换永远不会 应用于来自命令行的数据。在代码中使用时, duck输入仍然可以正常工作,没有任何意外。

开发

有关源代码、示例、问题、功能请求和错误报告,请访问 这是GitHub repository

文档

文档托管在Read the Docs

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

推荐PyPI第三方库


热门话题
java Admob初始化失败,应用程序在启动时崩溃,即使没有错误   java如何在ibatis中使用存储过程?   java干净体系结构:在不同的环境中分离IO和核心。jar文件   Java streams compare属性在两个列表之间相等,并返回true或false   有没有一种压缩Java Try-Catch块的方法?   Android片段中的java Mapbox SDK   用于IzPack安装的JavaFX本机启动器:控制InnoSetup/WiX/RPMBuild行为   java接口是否可以将一个已经实例化的对象作为属性?   hashmap中的java线程问题   请求中的java字符编码。getRemoteUser()   java将OneTONE链接更改为另一个id为的实体   java当使用javaw启动应用程序时,不会执行关闭钩子。exe   Android java代码更改显示的微调器   java GZIP解压字符串和字节转换   运行springbatch后java LDAP运行状况检查失败