Python如何通过subprocess调用adb命令详解

前言

本文主要给大家介绍了关于使用Python通过subprocess调用adb命令,subprocess包主要功能是执行外部命令(相对Python而言)。和shell类似。

换言之除了adb命令外,利用subprocess可以执行其他的命令,比如ls,cd等等。

subprocess 可参考: https://docs.python.org/2/library/subprocess.html

在电脑上装好adb工具,配置好adb的环境变量,先确保shell中可以调用adb命令。

代码示例

Python2.7

类 Adb,封装了一些adb的方法

import os
import subprocess
class Adb(object):
 """ Provides some adb methods """
 @staticmethod
 def adb_devices():
  """
  Do adb devices
  :return The first connected device ID
  """
  cmd = "adb devices"
  c_line = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0]
  if c_line.find("List of devices attached") < 0: # adb is not working
   return None
  return c_line.split("\t")[0].split("\r\n")[-1] # This line may have different format
 @staticmethod
 def pull_sd_dcim(device, target_dir='E:/files'):
  """ Pull DCIM files from device """
  print "Pulling files"
  des_path = os.path.join(target_dir, device)
  if not os.path.exists(des_path):
   os.makedirs(des_path)
  print des_path
  cmd = "adb pull /sdcard/DCIM/ " + des_path
  result = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
  print result
  print "Finish!"
  return des_path
 @staticmethod
 def some_adb_cmd():
  p = subprocess.Popen('adb shell cd sdcard&&ls&&cd ../sys&&ls',
        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  return_code = p.poll()
  while return_code is None:
   line = p.stdout.readline()
   return_code = p.poll()
   line = line.strip()
   if line:
    print line
  print "Done"

some_adb_cmd方法执行一连串的命令。各个命令之间用&&连接。

接着是一个死循环,将执行结果打印出来。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • 使用Python脚本和ADB命令实现卸载App

    前言 本文实现一个 Python 脚本,用来批量卸载模拟器或者实体机上面的 App 以及清除 LogCat 缓存. 开发 Android 的朋友,模拟器或者手机里面常常有大量调试的 Demo,对于手机来说还好,可是对于模拟器,有可能就会造成调试速度以及启动速度的下降.而且模拟器中 App 一个一个删除也是很麻烦.利用 ADB 命令,我们可以做很多事,其中就包括批量操作模拟器或者手机上的 App.当然包括删除操作啦.利用 Python 脚本和 ADB shell 命令以及 AS 自带的 CMD 窗

  • Python如何通过subprocess调用adb命令详解

    前言 本文主要给大家介绍了关于使用Python通过subprocess调用adb命令,subprocess包主要功能是执行外部命令(相对Python而言).和shell类似. 换言之除了adb命令外,利用subprocess可以执行其他的命令,比如ls,cd等等. subprocess 可参考: https://docs.python.org/2/library/subprocess.html 在电脑上装好adb工具,配置好adb的环境变量,先确保shell中可以调用adb命令. 代码示例 Py

  • python与C互相调用的方法详解

    前言 最近因为工作的需要,在考虑基于udp做一个用于网游战斗中的数据同步协议,为了前期测试数据,决定先做一个外部的代理tunnel,原理是在server端和client端分别建立网络转发proxy,即原来的C/S连接改为两个proxy之间数据快速传输.因为udp库是用C++写的代码,在测试数据的时候需要不断地修改参数,重新编译,修改输出统计数据制表等,不胜其烦,最终决定导出接口由python脚本来进行逻辑调用.下面话不多说,来一起看看详细的介绍: C/C++导出到python有多种方法,根据不同

  • Python 虚拟环境的价值和常用命令详解

    虚拟环境管理今天聊聊Python中虚拟环境的价值和常用命令. 为什么会有虚拟环境?在实际项目开发中,我们通常会根据自己的需求去下载各种相应的框架库,如Scrapy.Beautiful Soup等,但是可能每个项目使用的框架库并不一样,或使用框架的版本不一样. 这样需要我们根据需求不断的更新或卸载相应的库. 直接对我们的Python环境操作会让我们的开发环境和项目造成很多不必要的麻烦,管理也相当混乱. 如以下场景: 场景1:项目A需要某个框架1.0版本,项目B需要这个库的2.0版本.如果没有安装虚

  • 利用Golang如何调用Linux命令详解

    本文介绍的是Golang使用 os/exec 来执行 Linux 命令,分享出来供大家参考学习,下面来看看详细的介绍: 下面是一个简单的示例: package main import ( "fmt" "io/ioutil" "os/exec" ) func main() { cmd := exec.Command("/bin/bash", "-c", `df -lh`) //创建获取命令输出管道 stdou

  • Python调用adb命令实现对多台设备同时进行reboot的方法

    首先,adb实现对设备的reboot命令是:adb reboot . 但是如果是两台/多台设备的时候,需要声明serial number: adb -s serial_no reboot. 那么,如何用python实现对多台设备进行adb操作呢(reboot)? 这里涉及到 python 下 subprocess model的使用: import subprocess adb device 获取所有设备的 serial number: devices = subprocess.Popen( 'a

  • 通过python调用adb命令对App进行性能测试方式

    1 监听启动activity 信息命令adb shell logcat | grep START 可以查看apk包名和Activity名字 =========启动时间============ 2 冷启动(第一次启动)热启动(没有退出,第二次打开)命令 adb shell am start -W -n com.qihoo.appstore/.home.MainActivity 3 停止app命令(冷启动) adb shell am force-stop com.qihoo.appstore (热启

  • python flask安装和命令详解

    Flask Web开发实战学习笔记 Flask简介 Flask是使用Python编写的Web微框架.Web框架可以让我们不用关 心底层的请求响应处理,更方便高效地编写Web程序.因为Flask核心简 单且易于扩展,所以被称作微框架(micro framework).Flask有两个主 要依赖,一个是WSGI(Web Server Gateway Interface,Web服务器网关 接口)工具集--Werkzeug(http://werkzeug.pocoo.org/),另一个是 Jinja2模

  • Docker 打包python的命令详解

    最近用Python写了一段爬虫程序,为了隔离其运行环境,易于分发,把项目打包成Docker镜像 Dockerfile FROM python:2.7.12-alpine ADD ./src /job CMD ["python", "/job/main.py"] 构建命令 $ docker build -t job . 运行 $ docker run -d --name job job 比较简单 以上所述是小编给大家介绍的Docker 打包python的命令详解,希望

  • Python 调用Java实例详解

    Python 调用Java实例详解 前言: Python 对服务器端编程不如Java 所以这方面可能要调用Java代码 前提: Linux 环境  1 安装 jpype1 安装后测试代码: from jpype import * startJVM(getDefaultJVMPath(), "-ea") java.lang.System.out.println("Hello World") shutdownJVM() 2 调用非jdk的jar包, test.jar 包

  • Python数据分析JupyterNotebook3魔法命令详解及示例

    目录 1.魔法命令介绍 %lsmagic:列出所有magics命令 %quickref:输出所有魔法指令的简单版帮助文档 %Magics_Name?:输出某个魔法命令详细帮助文档 2.Line magics:Line魔法指令 3.Cell magics:Cell魔法指令 写bash程序 写perl程序 1.魔法命令介绍 %lsmagic:列出所有magics命令 Available line magics:[对当前行使用共计93个] %alias %alias_magic %autoawait

随机推荐