subprocess在第一次完全执行之前调用队列中的下一个命令

时间:2016-05-12 12:38:56

标签: python subprocess

我正在尝试使用文件列表作为变量自动调用命令。我希望命令执行,等到它完全完成,然后启动下一个。

file1 = ['A_1.txt', 'B_1.txt', 'C_1.txt']
file2 = ['A_2.txt', 'B_2.txt', 'C_2.txt']
output = ['A.out', 'B.out', 'C.out']

for 1, 2, out, in zip(file1, file2, output):
    subprocess.call(['arbitrarycommand', '-o', output, 1, 2])

但是,我认为我正在执行的命令会调用后续进程,因此调用会过早退出,导致文件被截断。

如果我将subprocess.call更改为:

subprocess.Popen(['arbitrarycommand', '-o', output, 1, 2]).wait()

然后第一个操作(即A)按预期工作并等待直到形成完整的文件,但后续的操作(即B + C等)不会。

如果我将subprocess.call更改为:

subprocess.check_call(['arbitrarycommand', '-o', output, 1, 2])

然后我得到一个非0退出-11。

为了提供问题的替代方法,是否有任何其他方法可以为列表的每个成员循环遍历Popen的单个实例,因为它正在管理执行单个(多个组件)进程完成。

0 个答案:

没有答案