1. ホーム
  2. python

[解決済み] Pythonのコマンドラインプログラムで任意のものをオートコンプリートさせる方法 NOT interpreter

2022-09-26 04:50:48

質問

私は、Pythonインタープリタ(unix上)でPythonオブジェクトのオートコンプリートを設定する方法を知っています。

  • Google は、これを行う方法についての説明のために多くのヒットを示します。
  • 残念ながら、参考文献が多すぎて、少し違う私のやるべきことを見つけるのは困難です。

私は、pythonで書かれたコマンドライン・プログラムにおいて、任意の項目のタブ/自動補完を有効にする方法を知る必要があります。

私の特定のユースケースは、電子メールを送信する必要があるコマンドラインのpythonプログラムです。 私は、ユーザーがその一部を入力する (そしてオプションで 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)

公式の モジュールのドキュメント はあまり詳しくありません。 readline ドキュメント をご覧ください。