python | 获得adb命令的返回值

2019/02/28 python

需求:使用in来判断手机中是否存在com.xx.xxx

思路:

  1. 使用os.system调用 adb shell pm list packages | grep xxx命令得到返回值com.xx.xxx
  2. 由于结果中有字符package:,因此打算使用 if xxx in xxx来判断是否存在com.xx.xxx
  3. 存在则执行adb uninstall XXX,具体代码如下:
package_name = "com.xx.xxx"
result = str(os.system("adb shell pm list packages | grep xxx"))
print(result)

if package_name in result:
    os.system("adb uninstall " + package_name)

结果:

问题:

  1. result的结果是0(明明已经将结果转换成string,结果为啥是个0呢)
  2. 没有卸载指定包

原因:

os.system(命令):返回结果是int。返回结果有两种:

  1. 0命令执行成功
  2. 1命令执行失败
  3. 256命令执行错误

如果是要使用adb的返回结果的话该命令不适用,可以使用os.popen,如下所示

package_name = “com.xx.xxx”
#os.popen的返回结果是在一个文件中,需要读取,而且读取结果是列表
result = os.popen("adb shell pm list packages | grep xxx")
# print(type(result))
# print(result)
f = result.readlines()
# print(f)

if package_name in f[0]:
    os.system("adb uninstall " + package_name)

Search

    Post Directory