Pythonのreadline踏み込み記録

2633 ワード

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)