0

私はos.system()を使用して端末と通信していますが、これは完全に機能します。ただし、それを使用して、コマンドを書き込む必要があるプログラムを開いていますが、これを行う方法がよくわかりません。

基本的に、私は実行しています:

tleap -f leaprc

これにより、ターミナルでプログラムが開き、次のように表示されます。

*non-important code*
>

ここで、プログラムへのコマンドの送信を開始する必要がありますが、 >の右側に書き込むものが見つかりません。 os.system()はこれには機能しません。また、Python に精通していないため、私は無知です。

4

2 に答える 2

0

あなたは使用してみることができますsubprocess.Popen

プログラムとして python を使用したサンプル コードを次に示します。

>>> p = subprocess.Popen(['python'],stdin = subprocess.PIPE,stdout = subprocess.PIPE)
>>> p.stdin.write('print "Hello, world!"\n')
>>> p.stdin.write('for i in range(10):\n    print i\n')
>>> p.communicate()
('Hello, world!\r\n0\r\n1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n', None)

Linux で実行している場合、コマンドを端末に送信する最も簡単な方法は、shlex.split関数を使用することです。だからあなたは電話するでしょう

p = subprocess.Popen(shlex.split('tleaf -f leaprc'),stdin = subprocess.PIPE,stdout = subprocess.PIPE)

少なくとも私の経験ではcommunicate、プロセス オブジェクトを呼び出すとプロセス オブジェクトが閉じられるため、出力を読み取る機会は 1 回しかありません。これがうまくいかない場合は、pexpectモジュールを調べます。

于 2013-06-07T17:42:27.430 に答える