【问题标题】:Using "adb shell" in Python在 Python 中使用“adb shell”
【发布时间】:2020-08-09 12:55:59
【问题描述】:

所以我决定创建一个非常简单的“ADB Installer”Python 应用程序,用于使用 os.system / os.popen 行在 Android 设备上安装构建和截屏,例如:

os.system("adb connect " + IP)

等等。但现在我有点卡住了,因为我需要发送这个(在我用作 Python 应用程序基础的 bash 脚本中可以正常工作):

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

请问如何使用 os.system / os.popen 做到这一点? (我确实尽量避免使用 adb-shell 和其他 Python 实现,但如果没有其他方法,我会尝试)。 谢谢!

【问题讨论】:

  • 你能解释一下为什么os.system 不适合你吗? adb shell 示例中的字符串不只是命令的参数吗?
  • 对不起,不清楚,也许 os.system 可以工作,我只是不知道怎么写(我真的是 Python 的初学者,对不起)。谢谢!

标签: python adb


【解决方案1】:

使用子进程:

from subprocess import run, PIPE

path = "[path]"
app_name = "[app name]"
commands_array = ["adb","shell", "rm", path + "/" + app_name , "&&", 
                  "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】:

    使用三引号,您可以在一个字符串中获得多行。不确定这是否可行,但这是我会尝试的。

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

    【讨论】:

      猜你喜欢
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多