我正在尝试使用文件列表作为变量自动调用命令。我希望命令执行,等到它完全完成,然后启动下一个。
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
的单个实例,因为它正在管理执行单个(多个组件)进程完成。