首页 > 解决方案 > Python:按顺序运行 bash 命令

问题描述

我正在*.in目录中的一堆文件上运行可执行文件。我的脚本一次转储所有命令。我想Popen在前面的进程终止后按顺序运行。这是我的脚本:

import glob, os, subprocess
import sys, re, math

exec_path='/Users/me/path/to/exec'
for name in glob.glob("*.in"):
    print name
    output = name+'.out'
    args = [exec_path, '-o', output, name]
    subprocess.Popen(args)

谢谢你的时间。

标签: pythonpopen

解决方案


听起来您需要等待流程结束才能继续循环。

您的示例可以这样重写;

import glob
import subprocess

exec_path='/Users/me/path/to/exec'
for name in glob.glob("*.in"):
    print name
    output = name + '.out'
    args = [exec_path, '-o', output, name]
    subprocess.Popen(args).wait()  # <- I've added .wait()

推荐阅读