【问题标题】:Python's os.system within a for loop: how to wait for a command to finish before re-starting the loop?for循环中的Python os.system:如何在重新启动循环之前等待命令完成?
【发布时间】:2021-01-12 23:05:06
【问题描述】:

我是使用 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 关闭后通过循环中的下一个元素。

【问题讨论】:

标签: python python-3.x os.system gnome-terminal


【解决方案1】:

我在下面的代码中使用了 subprocess 并且它有效,即软件运行一次并在进入下一个循环之前完全完成。

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

【讨论】:

    猜你喜欢
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多