前言
最近在使用subprocess遇到个问题,折腾了好半天才找到简单的解决办法,在这里记录下。
环境
Python:2.7.10
库:subprocess, logging
问题
使用subprocess
的Popen
类来执行shell命令,要怎么样才能知道命令执行结束了,以此来执行回调方法。
解决办法
使用subprocess.Popen.poll
方法来获取命令的执行情况。
poll
方法的返回值有两种情况
1. 当命令未运行结束的时候,返回None
2. 当命令结束时,返回命令的返回值
演示
这里使用logging
模块来辅助显示命令执行时间
分别使用两种调用shell命令的方式来测试
shell=True
shell=False
完整演示