我知道我可以这样做以获得 python 中制表符完成的效果。
import readline
COMMANDS = ['extra', 'extension', 'stuff', 'errors',
'email', 'foobar', 'foo']
def complete(text, state):
for cmd in COMMANDS:
if cmd.startswith(text):
if not state:
return cmd
else:
state -= 1
readline.parse_and_bind("tab: complete")
readline.set_completer(complete)
raw_input('Enter section name: ')
我现在有兴趣用目录完成制表符。 (/home/user/doc >tab)
我将如何着手完成这样的任务?
原文由 John Riselvato 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个如何执行文件系统路径增量完成的快速示例。我已经修改了您的示例,将其组织到一个类中,其中名为
complete_[name]
的方法表示顶级命令。我已经将完成函数切换为使用内部 readline 缓冲区来确定整体完成的状态,这使得状态逻辑更简单一些。路径完成在
_complete_path(path)
方法中,我已经连接了 额外的 命令以对其参数执行路径完成。我确信代码可以进一步简化,但它应该为您提供一个不错的起点:
用法:
更新 如果用户键入
/
,它将从根目录完成路径: