Python Subprocess没有启动但也没有错误

时间:2017-02-11 22:00:41

标签: python shell subprocess popen

我想要一个脚本创建2个simultaniuosly运行while循环。为了实现这一点,我试图打开另一个脚本(让多个脚本同时运行,而不是将所有代码都放在一个脚本中)。 主要脚本:

#!/bin/env python
import sys
import subprocess
print sys.path
process = subprocess.Popen('/home/pi/test2.py', shell=True, stdout=subprocess.PIPE)

第二个脚本:

#!/bin/env python
import sys
i=1
print sys.path
while i<50:
    print i
    i=i+1

主脚本终止没有错误,但看起来第二个甚至没有启动。为什么呢?

2 个答案:

答案 0 :(得分:1)

如果您想查看test2.py的输出,那么您不应该指定stdout=subprocess.PIPE。收集标准并允许您通过process对象访问它。

另外,对于它的价值,shell=True不是一个好主意,除非您确定需要它。

它看起来像这样

subprocess.Popen(['/home/pi/test2.py'])

答案 1 :(得分:0)

添加到sigmavirus24s的答案。如果您未设置shell=True,则必须将参数作为此['/home/pi/test2.py']列表传递,并将其作为第一个参数传递。对于许多参数,使用shlex模块split函数将string拆分为适合您的参数列表。

编辑:要使脚本生效,您需要传递['python', '/home/pi/test2.py']作为参数。这告诉python运行脚本。