小编典典

如何使python命令行程序自动完成任意内容而不是解释程序

python

我知道如何在python解释器中(在Unix上)设置python对象的自动完成功能。

  • Google展示了许多热门内容,以说明如何执行此操作。
  • 不幸的是,有太多的参考文献,很难找到我需要做的事情,而这略有不同。

我需要知道如何在以python编写的命令行程序中启用,制表符/自动完成任意项。

我的特定用例是需要发送电子邮件的命令行python程序。我希望能够在用户键入部分电子邮件地址(并有选择地按TAB键)时自动完成电子邮件地址(磁盘上有地址)。

我不需要它就可以在Windows或Mac上运行,而只需Linux。


阅读 226

收藏
2020-12-20

共1个答案

小编典典

使用Python的readline绑定。例如,

import readline

def completer(text, state):
    options = [i for i in commands if i.startswith(text)]
    if state < len(options):
        return options[state]
    else:
        return None

readline.parse_and_bind("tab: complete")
readline.set_completer(completer)

官方模块文档没有更多详细信息,请参阅readline文档以获取更多信息。

2020-12-20