fifoを使用したカスタムPython REPL

fifoを使用したカスタムPython REPL

2つのfifoを使用してカスタムREPL(Pythonなど)を作成できますか?

問題の説明

2つのfifoinout。ターミナルが3つあります。

  1. まず、Pythonコードの出力をin echo "print(1+2)" > in echo "a = 3" > in echo "b = 4" > in // wait some time # usual comments break SO formatting echo "print(a*b)" > in
  2. 2番目はちょうど実行されましたcat out。結果は次のようになります 3 // wait a little time <-- of course this is not real output 12
  3. 3番目は、一般的な対話型Pythonセッションと同様に、in行を読み、実行しpython、結果を印刷する必要があります。out

解決策/追加のコメントを試してください。

  • python in >out3番目の端末で実行するだけでは機能しません。最初の行が作成された後に終了し、in2番目の端末が印刷されます3
  • in行を最初から最後まで実行するラッパーを作成することは機能しません。なぜなら、同じ行をeval解析できる必要があるからです。import sys
  • 全体的に私は本当にPythonの標準REPLの動作が本当に欲しいです。ただキーボードの前に座って一行ずつ入力したくありません。入出力チャンネルを変更できるようにしたい。

答え1

見たことある?パスワード基準寸法? FIFOに書き込むためにメソッドをサブクラスに分類しcode.InteractiveConsoleてオーバーライドし、FIFOから行を読み取り、各行に対してメソッドを呼び出す外部ループを持つことができます。writeoutinpush

私はこれをテストしていませんが、私が提案したように正しく機能しなくても、解決策は間違いなくまだモジュールを使用しますcode

関連情報