不费吹灰之力的参数分析器
defopt的Python项目详细描述
defopt是一个轻量级的、不费吹灰之力的参数解析器。
除雾将:
- 允许从代码和命令行运行函数而无需修改
- 奖励您记录您的功能
- 避免编写、测试和维护参数解析代码
除雾不会:
- 以任何方式修改功能
- 允许您构建高度复杂或自定义的命令行工具
如果希望完全控制命令行的外观或行为,请尝试 docopt、click或argh。如果您只想编写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=True到defopt.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!
哲学
除雾器的开发遵循以下指导原则:
- 接口在几秒钟内就可以完全理解。如果需要更长的时间, 你的时间会更好地学习一个更灵活的工具。 < L>>{ STR 1 } $所学的任何东西都适用于现有的生态系统。< /强>完全相同。 defopt使用的docstring也由sphinx的autodoc扩展用于 生成文档,并通过ide进行类型检查。很可能是你 你已经知道了所有你需要知道的东西。
- 一切都为您处理。如果您使用的是defopt,那是因为 根本不想编写任何解析代码的参数。你可以相信它 为函数构建逻辑一致的命令行接口 不需要配置。
- 您的python函数永远不会被修改。类型转换永远不会 应用于来自命令行的数据。在代码中使用时, duck输入仍然可以正常工作,没有任何意外。
开发
有关源代码、示例、问题、功能请求和错误报告,请访问 这是GitHub repository。
文档
文档托管在Read the Docs。