Python子进程未启动,但也没有错误
我希望有一个脚本,创建2个同步运行的while循环。为了实现这一点,我正在尝试打开另一个脚本(让多个脚本同时运行,而不是将所有代码都放在一个脚本中)。 主脚本: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
#!/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
modulessplit
函数将字符串拆分为参数列表
编辑:要使脚本正常工作,需要将['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
命令,以便可以执行它。