3

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

在 Perl 6 中,MAINsub的签名会自动解析命令行参数。

有没有办法在没有大量样板的情况下在 Python 中做类似的事情?如果没有,最好的方法是什么?我正在考虑一个函数装饰器,它将执行一些自省并做正确的事情。如果没有什么已经喜欢它,我在想像我下面的东西。这是一个好主意吗?

@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)
4

6 回答 6

5

The Baker library contains some convenient decorators to "automagically" create arg parsers from method signatures.

For example:

@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
于 2010-10-04T20:30:16.650 回答
2

我不太确定你认为什么是解析样板。“当前”的方法是为 python 使用argparse系统。较旧的系统是getopt

于 2010-10-04T20:22:16.837 回答
2

Simon Willison 的optfunc模块试图提供您正在寻找的功能。

于 2010-10-04T20:29:11.290 回答
1

opterator模块处理这个。

https://github.com/buchuki/opterator

于 2012-12-10T17:13:53.013 回答
0

Python 具有执行此操作的getopts模块。

于 2010-10-04T20:21:51.783 回答
0

最近我遇到了用于装饰和简化命令行处理的开始项目。

它似乎提供了许多您正在寻找的相同功能。

于 2018-04-16T18:06:14.620 回答