我需要从Python脚本异步运行shell命令。我的意思是,我希望我的Python脚本在外部命令关闭并执行任何需要执行的操作时继续运行
我读了这篇文章:
在Python中调用外部命令
然后我去做了一些测试,如果我使用&;的话,os.system()将完成这项工作在命令末尾,这样我就不必等待它返回。我想知道的是,这是否是实现这一目标的正确途径?我尝试了commands.call(),但它对我无效,因为它阻塞了外部命令
请告诉我是否建议使用os.system(),或者我是否应该尝试其他方法
subprocess.Popen完全按照您的要求执行
子流程导入Popen的
p=Popen(['watch','ls'])#长时间运行的东西
# ... 在子流程运行时执行其他操作
p、 终止()
(编辑以完成评论中的答案)
Popen实例可以执行各种其他操作,比如您可以poll()查看它是否仍在运行,您可以与其通信()在stdin上发送数据,并等待它终止