0

だから私はinput(">")、ユーザーからコマンドを取得するために使用するコンソールベースのpython(実際にはpython3)プログラムに取り組んでいます。

ここで、プログラムに「最後のコマンド」機能を実装したいと思います。ユーザーがキーボードの上矢印を押すと、最後のコマンドが表示されます。

いくつかの調査の後、curses lib を使用してこれを実装できることがわかりましたが、2 つの問題があります。

  1. curses は Windows では使用できません。
  2. 私のプログラムの他の部分はprint()、出力を行うために使用します。それらを呪いで書き直したくありません。

「最後のコマンド」機能を実装する他の方法はありますか? ありがとう。

4

2 に答える 2

1

あなたができることは、ある種のシェル履歴機能を適用することです: ユーザーによって発行されたすべてのコマンドがリストに配置され、次に特別な呼び出し (コンソールのコマンド) を実装します。たとえば、「履歴」としましょう。すべてのコマンドの隣に番号が増加するように、入力された順序でユーザーのリストを出力します。次に、別の呼び出し (これもコンソールの特別なコマンド) で、'!!' としましょう。(ただし、実際には「repeat」など、何でもかまいません)、繰り返したいコマンドの数は、リストからコマンドを取得し、再入力せずに実行します。「!!」と入力します。34' は、'something -a very -b long -c with -d very -e large -f number -g of -h arguments -666' のコマンド番号 34 を再度実行します。

あなたが望んでいたものとまったく同じではないことは承知していますが、すぐに実装するのは非常に簡単で、目的のコマンド繰り返し機能を提供し、希望どおりに実行する方法がわかるまでは適切な代替品になるはずです;)

于 2013-01-18T12:46:18.657 に答える
1

新しいバージョンの python には、ユーザー入力を処理するためのナイス modile readlineと、オートコンプリート用のrlcompleterが存在します。しかし、Windowsではとにかくreadline libのインストールが必要になると思います。

于 2013-01-18T12:33:08.477 に答える