Python:Subprocess无法获得进程'输出

时间:2015-04-02 05:34:18

标签: python raspberry-pi popen yowsup

背景资料:

我正在编写一个Python应用程序,它将接收WhatsApp消息并根据提供的命令执行一些操作。为此,我安装了yowsup,它也是一个处理WhatsApp消息传递的Python应用程序。

策略

Yowsup有一个很好的发送和接收消息的接口,所以我的想法是通过Popen启动进程并处理stdin,stdout和stderr。 为此我写了下面的代码:

from subprocess import Popen, PIPE
statement = "sudo /home/pi/yowsup/yowsup-cli demos --yowsup --config /home/pi/yowsup/config"
yowsup = Popen(statement.split(" "), stdout=PIPE, stdin=PIPE, stderr=PIPE)

while True:

    output = yowsup.stdout.readline()
    if output != "":
        print output.rstrip()

问题:

代码没有返回任何消息,所以我更改了语句以检查我的代码是否正常:

statement = "ping 192.168.0.9 -c 4"

宾果!使用命令ping,代码效果很好。

我的问题:

  • 为什么我无法使用yowsup应用程序处理stdin和stdout以及如何使其工作?

  • 它是否扮演yowsup也是Python应用程序的角色?

1 个答案:

答案 0 :(得分:0)

"sudo /home/pi/yowsup/yowsup-cli demos --yowsup --config /home/pi/yowsup/config",这里--yowsup启动一个等待输入的交互式客户端。在完成运行之前,您无法获得输出 另外,请确保yowsup-cli可执行或以python yowsup-cli开头 yowsup-cli无权接收邮件。您必须import yowsup并使用该库来接收消息。