次のコードを使用して、Python で bc を実行できます。
subprocess.Popen("bc", stdout=subprocess.PIPE).communicate()[0]
ただし、これは bc を起動するだけであり、たとえば 1+1 など、必要なものを手動で入力する必要があります。Python を使用して 1+1 を bc に送信し、出力を取得したいと考えています。どうすればいいですか?
次のコードを使用して、Python で bc を実行できます。
subprocess.Popen("bc", stdout=subprocess.PIPE).communicate()[0]
ただし、これは bc を起動するだけであり、たとえば 1+1 など、必要なものを手動で入力する必要があります。Python を使用して 1+1 を bc に送信し、出力を取得したいと考えています。どうすればいいですか?
理解した。次のように、stdin と stdout が必要であり、改行で終わる文字列との通信を呼び出す必要があります。
p = subprocess.Popen("bc", stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate('1+1\n')
out は、必要な出力です。
次のようにしてみてはどうでしょうか。
dogface@computer ~
$ cat oneplusone
1+1
quit
dogface@computer ~
$ python3
Python 3.2.3 (default, Jul 23 2012, 16:48:24)
[GCC 4.5.3] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> subprocess.call(["bc", "-q", "oneplusone"])
2
0