【问题标题】:Subprocess.Popen doesnt finish the called scriptSubprocess.Popen 没有完成被调用的脚本
【发布时间】:2021-04-12 08:15:22
【问题描述】:

我的目标是通过使用 subprocess.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 文件并因此产生错误消息。

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

提前致谢。

【问题讨论】:

    标签: python subprocess


    【解决方案1】:

    我不知道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')
    

    【讨论】:

    • 感谢您的帮助。 PS:“abq2020”一词用于访问不同软件的一些专有模块。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 2012-05-04
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多