Python 神奇的 main() 签名就像 Perl 6

标签 python command-line-arguments raku magic-methods method-signature

python 是否有任何方法可以轻松快速地制作 CLI 实用程序而无需大量参数解析样板?

在 Perl 6 中,MAIN sub automagically parses command line arguments. 的签名

有没有什么方法可以在没有大量样板的情况下在 Python 中做类似的事情?如果没有,最好的方法是什么?我在想一个函数装饰器,它将执行一些内省(introspection)并做正确的事情。如果还没有类似的东西,我在想下面的东西。这是个好主意吗?

@MagicMain
def main(one, two=None, *args, **kwargs):
    print one # Either --one or first non-dash argument
    print two # Optional --arg with default value (None)
    print args # Any other non-dash arguments
    print kwargs # Any other --arguments

if __name__ == '__main__':
    main(sys.argv)

最佳答案

Baker库包含一些方便的装饰器,可以从方法签名“自动”创建 arg 解析器。

例如:

@baker.command
def test(start, end=None, sortby="time"):
  print "start=", start, "end=", end, "sort=", sortby

$ script.py --sortby name 1
start= 1 end= sortby= name

关于Python 神奇的 main() 签名就像 Perl 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3858790/

相关文章:

objective-c - 在 Objective-C 中访问命令行参数

io - 似乎无法从运行中获取非字符串输出

python - docker Remote api 无法将端口绑定(bind)到主机

python - 如何将函数中的多个变量移至全局范围?

linux - 如何通过管道给出参数杀死

Python argparse 允许组合标志

raku - 在接收器上下文中抛出的 block 的最后一个元素

raku - Log::IntelliJ中的时间线可视化

python - 在 Python 中做 MixIns 的优雅方法是什么?

python - 计算切片列表中的连续出现