需求:使用in来判断手机中是否存在com.xx.xxx
思路:
- 使用os.system调用
adb shell pm list packages | grep xxx命令得到返回值com.xx.xxx
- 由于结果中有字符package:,因此打算使用
if xxx in xxx来判断是否存在com.xx.xxx
- 存在则执行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)
结果:
问题:
- result的结果是0(明明已经将结果转换成string,结果为啥是个0呢)
- 没有卸载指定包
原因:
os.system(命令):返回结果是int。返回结果有两种:
- 0命令执行成功
- 1命令执行失败
- 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)