代码之家  ›  专栏  ›  技术社区  ›  Daenyth

python magic main()签名,如perl 6

  •  2
  • Daenyth  · 技术社区  · 14 年前

    在没有大量参数解析样板的情况下,python是否有任何方法可以轻松快速地生成cli实用程序?

    在Perl6中,用于 MAIN 附属的 automagically parses command line arguments.

    在没有大量样板文件的情况下,有没有办法在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)
    
    6 回复  |  直到 6 年前
        1
  •  5
  •   Ben James    14 年前

    这个 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
    
        2
  •  2
  •   jkerian    14 年前

    我不太确定您认为要分析样板文件的内容。“当前”方法是使用 argparse python系统。旧系统是 getopt .

        3
  •  2
  •   Will McCutchen    14 年前

    西蒙威利森的 optfunc 模块试图提供您正在寻找的功能。

        4
  •  1
  •   Daenyth    12 年前

    这个 opterator 模块处理这个问题。

    https://github.com/buchuki/opterator

        5
  •  0
  •   JoshD    14 年前

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

        6
  •  0
  •   jkerian    6 年前

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

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