子流程.Popen没有完成调用的脚本



我的目标是使用子流程调用不同的python脚本。弹出并将结果保存在一个txt文件中。我使用

process = subprocess.Popen("start cmd /c abq2020 python " + directory + os.sep + "data_mean.py", shell=True)
process.wait()
file = np.loadtxt(directory + os.sep + 'Values.txt')

在我的主程序和中

f = open(varpath + os.sep + 'Values.txt','w+')
for i in Output:
for j in i:
f.write(str(j) + '     ')
f.write('n')

f.close()

在子程序中。

现在我的问题是,主程序不会等到子程序创建了txt文件,从而产生错误消息。

我使用这个方法是因为我不知道在主进程和子进程之间传递变量的其他方法。我很感激任何想法和建议。

提前谢谢。

我不知道apq2020是什么,也不知道它为什么在python命令之前,但我认为您知道自己在做什么。您不需要也不应该启动命令提示符。除了提供大量缺失的import语句外,这就是您所需要的:

process = subprocess.Popen("abq2020 python " + directory + os.sep + "data_mean.py", shell=True)
process.communicate() # process.wait() will work in this case, too
file = np.loadtxt(directory + os.sep + 'Values.txt')

最新更新