gpt4 book ai didi

python - python命令行程序自动注册 "commands"

转载 作者:行者123 更新时间:2023-11-28 23:06:41 29 4
gpt4 key购买 nike

我想开发一个命令行程序,可以处理子命令并提供“帮助”。具体来说,假设我有一个名为“cgent”的脚本,我想让子命令“abc”、“def”和“xyz”执行并接受其余的 sys.args 以供 optparse 处理。

cgent abc [options] cgent help abc....

如果我对子命令名称进行硬编码,那么所有这些都非常简单。但是,我希望能够通过添加类或模块(?)继续添加子命令。例如,这类似于 Web 框架用于添加 Controller 的想法。我曾尝试挖掘塔架,看看是否可以重现那里所做的一切,但我还没有弄清其中的逻辑。有关如何执行此操作的任何建议?

谢谢,肖恩

最佳答案

如果您不必对参数进行复杂的解析,我推荐 baker模块。它允许您通过装饰器定义子命令及其参数。例如:

#!/usr/bin/env python
import baker

@baker.command()
def foo(a=1):
print 'foo:', a

@baker.command()
def baz(b=1):
print 'baz:', b

baker.run()

定义了两个子命令foobaz , 带有(可选)参数 ab .所以你可以像这样使用它们:

$ ./test_baker.py foo --a 2
foo: 2
$ ./test_baker.py baz
baz: 1

它还使用文档字符串生成帮助。

baker模块是全局的,你的子命令可以跨越多个 .py文件。只要导入,子命令就会自动注册。

而且它只是一个单一的.py文件,这样你就可以把它放在你的源代码树中。

关于python - python命令行程序自动注册 "commands",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4642373/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com