android - 从包含多个引号的 Python 脚本中运行 ADB 命令
问题描述
在我的 Appium Python 脚本中,这是我通常如何执行 ADB 调用的示例,我需要以下输出:
target_device = str(subprocess.check_output(["adb", "-s", device1, "shell", "getprop | grep ro.product.model"]))
这很好用,因为语法非常简单。但是,我遇到了以下 adb 命令,它将提供设备的 IMEI,这非常酷。这里是:
adb shell service call iphonesubinfo 1 | awk -F"'" 'NR>1 { gsub(/\./,"",$2); imei=imei $2 } END {print imei}'
但是,当我尝试从我的 Python Appium 脚本中运行该 adb 命令时,正如您所想象的那样,所有引号都会变得非常混乱,最终我无法成功运行它。但是,从命令提示符运行时它确实工作得很好(我已经测试过了)。
所以我的问题是,如何使用子进程运行该 IMEI 命令?我尝试了几种操作,但没有任何效果!!!谢谢
例如
target_device_imei = str(subprocess.check_output(["adb", "-s", device1, "shell", "service call iphonesubinfo 1 | awk -F"'" 'NR>1 { gsub(/\./,"",$2); imei=imei $2 } END {print imei}']))
想出解决办法:
import subprocess, re
device_imei = str(subprocess.check_output(["adb","shell", "service call iphonesubinfo 1"]))
device_imei = re.findall(r"'(.*?)(?<!\\)'", device_imei)
device_imei = "".join(device_imei)
device_imei = device_imei.replace('.','')
print device_imei
解决方案
推荐阅读
- c# - 如何在 C# 中解决此问题: main.cs(18,5): 警告 CS0642: 可能错误的空语句
- python - 嵌套字典的自动激活,其中包含要在 Python 中附加的列表
- websphere - 在哪里可以找到 com.ibm.websphere.runtime.CustomService 现有服务的配置详细信息?
- javascript - 我应该将预加载器图像放在页面加载的哪个位置?
- proc-r-package - 与 AUC 的 pROC 测试差异 = 0.5
- c - 为什么我的代码不倒带并将输入保留在缓冲区中?
- python - 我如何从互联网上随机拍摄一张照片(从关键字的结果中),然后让 python 显示给我看?
- javascript - Spark AR - 启用从脚本到补丁编辑器的动画
- java - 根据预定义的规则集将输入集分类
- angular - 如何将布尔值从服务发送到可观察的组件?(Angular)