python调用shell命令(打开)并等待命令完成。工作完成后如何获得信号?

时间:2014-09-28 09:30:26

标签: python shell

我使用名为shoebox.app的应用程序可以将psd文件拆分为多个png文件。 该应用程序提供了一个CMD界面,我尝试在termial中工作正常:

open /Applications/ShoeBox.app --args \"files=xxx.psd\"

现在我想写一个python脚本来完成这项工作:

import os
if __name__ == '__main__':
    CMD = "open /Applications/ShoeBox.app --args \"files=xxx.psd\""
    os.system(CMD)

这也很好。

现在我想做什么 "将psd分成png作业"饰面:

import os
if __name__ == '__main__':
    CMD = "open /Applications/ShoeBox.app --args \"files=xxx.psd\""
    os.system(CMD)

    do_something_to_pngs_func()

问题在于"拆分工作"需要几秒钟,我需要等到它结束,然后打电话给我 do_something_to_pngs_func功能。

但是,我怎么知道os.system(CMD)实际上已经结束了?

现在我的临时解决方案是添加" time.sleep(10)"在调用我的函数之前,当然这不是最佳解决方案。

任何建议都将不胜感激,谢谢:)

1 个答案:

答案 0 :(得分:1)

默认情况下,open命令会立即返回。要使open等待应用程序完成,请使用-W-n开关:

CMD = "open -W -n /Applications/ShoeBox.app --args \"files=xxx.psd\""

参考: