1

我可以使用以下代码使用 Python 运行 bc:

subprocess.Popen("bc", stdout=subprocess.PIPE).communicate()[0]

但是,这只会启动 bc,我必须手动输入我想要的任何内容,例如 1+1。我想使用 Python 将 1+1 发送到 bc 并获取输出。我该怎么做?

4

2 回答 2

4

弄清楚了。你必须有标准输入和标准输出,并调用以换行符结尾的字符串通信,如下所示:

p = subprocess.Popen("bc", stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate('1+1\n')

你想要的输出在哪里。

于 2013-11-10T01:58:24.537 回答
0

做这样的事情怎么样:

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
于 2013-11-09T23:13:08.140 回答