我被告知subprocess.Popen没有阻塞,所以进程在后台运行,你的python程序不会等到它完成。但是,这不是我想要的。
我正在将程序调用到外部python程序中,我无法控制。它不返回任何返回代码,只是运行,对文件进行操作和完成。我想调用它,只在该调用完成后继续我的python程序。我该怎么做?
答案 0 :(得分:5)
在子流程上调用communicate或wait。
答案 1 :(得分:2)
使用子流程中的call
方法。
subprocess.call(* popenargs,** kwargs) 使用参数运行命令。等待命令完成,然后 返回returncode属性。
请参阅→http://docs.python.org/library/subprocess.html#subprocess.call
答案 2 :(得分:1)
最好的方法是使用communicate
方法:
http://docs.python.org/library/subprocess.html#subprocess.Popen.communicate
另请查看wait
方法,它说明了为什么大多数时候您应该使用通信:
http://docs.python.org/library/subprocess.html#subprocess.Popen.wait