Open bonfy opened 7 years ago
原文链接: http://blog.csdn.net/windone0109/article/details/8895875
os.system(cmd):
该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码,即脚本中“exit 1”的代码执行后,os.system函数返回值的高位数则是1,如果低位数是0的情况下,则函数的返回值是0×100,换算为10进制得到256。
如果我们需要获得os.system的正确返回值,那使用位移运算可以还原返回值:
>>> n = os.system(test.sh)
>>> n >> 8
>>> 3
os.popen(cmd)
通过os.popen()返回的是 file read 的对象,对其进行读取read()操作可以看到执行的输出
例如:print os.popen("adb shell ls /sdcard/ | findstr aa.png").read() >>> 输出:aa.png(若aa.png存在,否则输出为空)
subprocess.Popen()
subprocess模块被推荐用来替换一些老的模块和函数,如:os.system、os.spawn、os.popen等
subprocess模块目的是启动一个新的进程并与之通信,最常用是定义类Popen,使用Popen可以创建进程,并与进程进行复杂的交互。
pipe = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE).stdout
print pipe.read()
Python模块subprocess小记 - http://blog.csdn.net/wirelessqa/article/details/7778761
遇到一个问题,需要 python 调用 command 命令读取命令的返回值,可是发现一直使用的
os.system
只能返回 0 、248 之类的,遂查之