背景: readline モジュールをインポートして使用し、自家製のコマンド ライン インターフェイスを構築する Python プログラムがあります。そのCLIのフロントエンドとして機能する2番目のpythonプログラム(ボトル、Webマイクロフレームワークを中心に構築)があります。2 番目の python プログラムは、パイプのようなインターフェイスを最初の python プログラムに開き、基本的にユーザー入力と CLI 出力を 2 つの間でやり取りします。
問題:外側のラッパー プログラム (Web インターフェイス) で、エンドユーザーが TAB キー (または readline complete 関数をバインドするその他のキー) を押すたびに、readline complete 関数を起動せずにそのキーが CLI の stdin に挿入されます。 . 通常、対話型 CLI セッション中に発生するように、代わりに readline のコマンド補完機能をトリガーするためにこれが必要です。
考えられる解決策 #1:サブプロセスの stdin に TAB キーを送信して、バッチの使用がインタラクティブな使用と同じように機能する方法はありますか?
考えられる解決策 #2:または、完了プロセス全体 (一致の生成と表示を含む) を手動でトリガーする方法があれば、 のような特別なテキスト シーケンスを挿入してスキャンし"<TAB_KEY_HERE>"
、可能な完了一致表示関数を手動で起動することができます。(可能な一致を生成するコンプリータ関数を作成したので、実際に必要なのは、可能な一致を表示する readline の関数にアクセスすることだけです。)
考えられる解決策 #3: readline の matches-display 関数にアクセスできない場合、最後のオプションは、readline の組み込みの表示補完関数を書き直して、直接呼び出せるようにすることだと思います。:(
より良い解決策はありますか?上記のソリューションのいずれかによって提示されたパスに従うことに関する提案はありますか? 私は#1と#2で立ち往生しており、#3を避けようとしています.
ありがとう!