Python子进程 - 不返回任何内容

时间:2014-10-18 14:26:03

标签: python python-2.7 subprocess

我在这里看到了一些使用Python运行子进程的其他问题,但没有一个解决了我目前遇到的问题。相对较新的Python,所以只是玩游戏,我确信它是一个简单的解决方案..但我不能让它工作!

我想要一个子流程来返回一些数据,而且它不是。所以我写了这个基本的例子来尝试让它工作,但它仍然不是。我哪里错了?我没有任何错误或任何错误,它只是没有做任何事情。

sp_test.py

import os
import subprocess

def main():
    subp = subprocess.check_call(['python', 'sp.py'])
    print subp


if __name__ == '__main__':
    main()

和...

sp.py

def do_something():
    return "Hello World!"


do_something()

exit()

1 个答案:

答案 0 :(得分:1)

您的实施有两个问题。

<强> 1

check_call仅返回0的returncode或者抛出异常。 (见https://docs.python.org/2/library/subprocess.html#subprocess.call

<强> 2

此外,您只是通过返回一个值来尝试捕获Hello World!的值。使用子进程无效。如果你想这样做,你可能想要查看像Pyro4(https://pythonhosted.org/Pyro4/intro.html

这样的东西

如果您想要使用子进程,这是一个解决方案。

首先,您可以使用check_output(https://docs.python.org/2/library/subprocess.html#subprocess.check_output)。这将捕获子进程的任何输出。

然后在sp.py程序中,您需要打印结果do_something

sp_test.py

import os
import subprocess

def main():
    subp = subprocess.check_output(['python', 'sp.py'])
    print subp

if __name__ == '__main__':
    main()

<强> sp.py

def do_something():
    return "Hello World!"


print do_something()

exit()