Запуск команды ADB из скрипта Python, который содержит несколько кавычек
В моем скрипте 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}'
Однако, когда я пытаюсь запустить эту команду adb из моего скрипта Python Appium, как вы можете себе представить, все кавычки могут стать очень запутанными, и в итоге я не могу выполнить ее успешно. Тем не менее, он работает просто отлично при запуске из командной строки (я проверял это).
Итак, мой вопрос, как я могу запустить эту команду 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