Python子进程未启动,但也没有错误

Python子进程未启动,但也没有错误,python,shell,subprocess,popen,Python,Shell,Subprocess,Popen,我希望有一个脚本,创建2个同步运行的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 pyth

我希望有一个脚本,创建2个同步运行的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
#/bin/env python
导入系统
i=1
打印系统路径

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

另外,就其价值而言,
shell=True
不是一个好主意,除非您确定自己需要它

然后它会像这样

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

添加到sigmavirus24s答案。当您没有设置
shell=True
时,您必须像下面这样以列表的形式传递参数
['/home/pi/test2.py']
并将其作为第一个参数传递。对于许多参数,使用
shlex
modules
split
函数将
字符串拆分为参数列表


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

为什么需要两个同时运行的while循环?请解释你的实际目标是什么。谢谢我需要从传感器获取测量数据(=输入信号的持续时间)-这意味着脚本只需等待大约30毫秒,输入信号就会停止。同时,我必须每20ms输出1ms信号来控制一台电机您知道更好的解决方案吗?process=subprocess.Popen('/home/pi/test2.py')类似这样?然后我得到的错误是没有这样的文件或directory@xHascox这个文件存在吗?它是否可执行/我想是的-我不太习惯linux和python-如果我手动打开并运行它,它会正常工作。“如果我手动打开它”是什么意思?您能从终端运行
/home/pi/test2.py
吗?子进程.Popen(['/home/pi/test2.py'])会导致错误2没有这样的文件或目录而不是
['/home/pi/test2.py']
使用
['python','/home/pi/test2.py']
。这适用于meI即使我键入的路径完全是胡说八道,也不会出现任何错误,但是test2.py没有开始。当我设置
process=subprocess.Popen(['python','/home/pi/test2.py'])
并在bash中运行第一个文件时,它在我的RPi上工作。它打印了从1到49的数字。另外,由于您在Linux上,所以您在test2.py上运行了
chmod+x
命令,以便可以执行它。