python - 如何使 python 命令行程序自动完成任意事物而不是解释器

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

  • Google 展示了许多关于如何做到这一点的解释。
  • 不幸的是,引用资料太多,很难找到我需要做的事情,这略有不同。

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

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

我不需要它在 windows 或 mac 上工作,只需要在 linux 上工作。

最佳答案

使用 Python 的 readline 绑定(bind)。例如,

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)

官方module docs没有更详细的,见readline docs了解更多信息。

https://stackoverflow.com/questions/187621/

相关文章:

python - 是否有可能 "hack"Python 的打印功能?

python - 如何在 Python 中加入两个生成器?

installation - 如何从命令行正确设置 CMAKE_INSTALL_PREFIX

linux - 如何在不重新输入 SSH 密码的情况下执行 `git pull`?

linux - 我应该选择什么 : GTK+ or Qt?

python - pandas loc vs. iloc vs. at vs. iat?

python - Seaborn地 block 没有出现

python - 检查字符串是否包含数字

linux - 来自守护程序 : "Conflict ... already in use by c

python - 使用 PyCrypto AES 256 加密和解密