1

私は現在、このコードを持っています。これは機能し、期待どおりの出力を生成します。つまり、「ls -ltr |」を実行した場合の出力行のリストです。less」をターミナルから。

p1 = subprocess.Popen(shlex.split('ls -ltr'), stdout=subprocess.PIPE,
                                                        stderr=subprocess.PIPE)
p2 = subprocess.Popen(shlex.split('less'), stdin=p1.stdout,
                               stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print p2.communicate()

subprocess.Popen などを使用してインタラクティブな出力を取得し、端末から直接コマンドを実行した場合と同じように、スクロールしてキーボード コマンドを入力する方法はありますか?

4

1 に答える 1

2

Python プロセスが端末に接続された独自の stdout を持っている場合、それは

p1 = subprocess.Popen(shlex.split('ls -ltr'), stdout=subprocess.PIPE,
                                              stderr=subprocess.PIPE)
p2 = subprocess.Popen(shlex.split('less'), stdin=p1.stdout)

つまり、 からの出力をリダイレクトしないでくださいless

于 2012-07-30T12:10:38.147 に答える