在for循环中使用Python的os.system:如何在重新启动循环之前等待命令完成?

问题描述

我是使用os.system的新手(在Python 3中),并且正在尝试执行通常在Linux终端中运行的程序。我需要迭代几次,并且正在使用类似以下循环的内容

for item in item_list:
    os.system("gnome-terminal -- program_execute "+item) 

问题在于此循环同时打开n终端窗口(我的item_list的长度为n)并同时执行所有窗口。我的问题是:

如何运行循环len(item_list)次,而下一次运行仅在当前循环完成后才开始?

我不能使用sleep(),因为运行时间因项目而异,并且我想优化流程。

编辑:我尝试使用.communicate()和.wait()失败。我希望os.system(或os.subprocess)了解gnome-terminal仍在运行,仅在上一个循环的gnome-terminal关闭后才通过循环中的下一个元素。

解决方法

我在下面的代码中使用了子流程,它可以正常工作,即该软件运行一次并在进入下一个循环之前完全完成。

for item in item_list:
    subprocess.call(["gnome-terminal","--disable-factory","--","my_command"])

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...