Использование «оболочки adb» в Python

#python #adb

Вопрос:

Поэтому я решил создать очень простое приложение на Python «ADB Installer» для установки сборок и создания скриншотов на устройствах Android с использованием строк os.system / os.popen, например:

 os.system("adb connect "   IP)
 

и т.д. Но теперь я немного застрял, потому что мне нужно отправить это (что хорошо работает в скрипте bash, который я использую в качестве основы для своего приложения на Python).:

   adb shell "
  cd [path] 
  rm -r [app name]
  exit
  "
 

Как мне это сделать с помощью os.system / os.popen, пожалуйста? (Я действительно старался избегать использования adb-оболочки и других реализаций Python, но если другого способа нет, я попробую).
Спасибо!

Комментарии:

1. Можете ли вы пояснить, почему os.system это не работает на вас? Разве строка в adb shell примере не является просто параметром для команды?

2. Извините за неясность, может быть, os.system будет работать, я просто не уверен, как ее написать (я действительно новичок в Python, извините). Спасибо!

Ответ №1:

Использование подпроцесса:

 from subprocess import run, PIPE

path = "[path]"
app_name = "[app name]"
commands_array = ["adb","shell", "rm", path   "/"   app_name , "amp;amp;", 
                  "ls", "-la", path]
try:
    result = run(commands_array, stdout=PIPE, stderr=PIPE, 
                  check=True, universal_newlines=True)
except Exception as e:
   print("An error occured:")
   print(e)

print(result.stdout)
 

Ответ №2:

Используя triplequotes, вы можете получить несколько строк внутри строки. Не уверен, что это сработает, но я бы попробовал.

 os.system("""adb shell "
  cd [path] 
  rm -r [app name]
  exit
  " """)