【问题标题】:Python CLI Framework and Argument Parsing with Tab CompletionPython CLI 框架和带有 Tab 补全的参数解析
【发布时间】:2015-08-21 21:53:54
【问题描述】:

我正在寻找一个已经存在的好模块,用于解析自定义 CLI 接口上的参数。如果您可以想象有一个 CLI 可以为您提供提示:

framework> commands go here....

当你添加参数时它开始变得乏味,例如:

framework> command <argument1> <argument2> ...

我想知道是否有任何类型的模块不仅可以轻松创建这些 CLI 界面,而且可以为命令链中的每个参数提供制表符完成功能。每次我创建这样的东西时,我都厌倦了重新发明轮子!

framework> comma<tab>
framework> command arg<tab>
framework> command argument parame<tab>
framework> command argument parameter

你明白了。如果还没有针对此类事物的模块,那么任何有关以模块化方式创建此类事物的优雅解决方案的建议,将不胜感激。

请注意,我不想解析通过父进程命令 shell(例如 bash)传入的参数,我想在脚本本身的无限 while 循环中进行处理。例如:

while (True):
    cmd = raw_input("framework> ")
    framework.process_command(cmd)

【问题讨论】:

    标签: python frameworks command-line-interface tab-completion


    【解决方案1】:

    看看 Click,“一个 Python 包,可以用尽可能少的代码以可组合的方式创建漂亮的命令行界面”:http://click.pocoo.org/5/

    【讨论】:

    • 除非我弄错了,否则这只允许您与从父进程的命令行传入的参数进行交互,例如 bash。我想到的是在无限循环或其他东西中捕获输入,并从脚本内部进行处理,而不是从通过 shell 命令行作为系统参数传入的内容进行处理。
    【解决方案2】:

    在 python 中,你有一个名为 argparse 的内置模块来管理 CLI 参数应用程序,现在看看这个模块 argparse 扩展标签完成 https://pypi.python.org/pypi/argcomplete/0.8.4

    【讨论】:

      【解决方案3】:

      看起来内置的cmd 模块提供了您正在寻找的东西。它支持命令和参数的制表符完成。这是来自 PyMOTW 的tutorial。另一个例子here

      如果您需要更多自定义,还有 cmd2 扩展内置 cmd。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-02
        • 2011-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多