Python之readline踩坑记录

import readline
import os
 
def completer(text,state):
    ds=os.listdir()
    rs=list(filter(lambda s:s.startswith(text),ds))
    if state<len(rs):
        return rs[state]
    return None
readline.parse_and_bind("tab: complete")
readline.set_completer(completer)
input()
  • 形象理解的话,state其实就是第几选项的序号。
  • 必须注意如果在函数中有错误的话,在你按下tab键后什么都不会发生(新手会在这里卡壳,还以为是环境问题)。要知道,readline非常高级地封装了你的函数,这样才能在input中补全。但这对debug来说不见得是一件好事。较好的方法是先调用一下你的函数并检查输出,这样函数中的Exception会正常抛出。
# 加上这句:
completer('foo',0)

你可能感兴趣的:(python)