我知道如何在python解释器(在unix上)中设置python对象的自动完成.

  • 谷歌展示了许多关于如何做到这一点的解释.
  • 不幸的是,有太多的参考文献,很难找到我需要做什么,这是略有不同.

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

我的特定用例是一个需要发送邮箱的命令行python程序.我希望当用户键入邮箱地址的一部分(并且可以 Select 按TAB键)时,能够自动完成邮箱地址(我在磁盘上有地址).

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

推荐答案

使用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)

官方的module docs没有更多详细信息,更多信息请参见readline docs.

Linux相关问答推荐

awk:try 将时间戳字符串转换为unix纪元时间

奇怪的 Bash 脚本行为

+后移动下一行到当前行

如果列小于 X,linux 合并行

Powershell Core,MXLinuxv21,运行 linux /usr/bin/x 命令导致对象命令运行时找不到文件

RabbitMQ 安装后没有自动启动

为什么 printf 仍然可以使用低于 XMM 寄存器中 FP args 数量的 RAX?

使用 bash 在包含模式的 java 文件中查找行,然后替换该行的另一部分

CHMOD 755 与 750 权限集之间的差异

为什么我不能将 Unix Nohup 与 Bash For 循环一起使用?

对一行的最后一个字段进行排序

任何方式以编程方式在android上运行shell命令?

在 Linux/POSIX 系统上获取用户全名的最简单方法是什么?

使用单个命令打开 .tar.gz 文件

并行运行 shell 脚本

Linux 配置/制作,--prefix?

如何仅打印 hexdump 中的十六进制值,而不打印行号或 ASCII 表?

从线程内Forking 是否安全?

linux中netstat和ss的区别?

如何安装python开发者包?