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


Posted in Python onAugust 27, 2017

前言

本文主要给大家介绍了关于使用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方法执行一连串的命令。各个命令之间用&&连接。

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

总结

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

Python 相关文章推荐
python strip() 函数和 split() 函数的详解及实例
Feb 03 Python
浅谈python中的正则表达式(re模块)
Oct 17 Python
Python实现的IP端口扫描工具类示例
Feb 15 Python
pycharm访问mysql数据库的方法步骤
Jun 18 Python
Pytorch卷积层手动初始化权值的实例
Aug 17 Python
决策树剪枝算法的python实现方法详解
Sep 18 Python
pyinstaller将含有多个py文件的python程序做成exe
Apr 29 Python
keras打印loss对权重的导数方式
Jun 10 Python
Python3爬虫中识别图形验证码的实例讲解
Jul 30 Python
python属于哪种语言
Aug 16 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 Python
Python+Pillow+Pytesseract实现验证码识别
May 11 Python
Python中序列的修改、散列与切片详解
Aug 27 #Python
Python正确重载运算符的方法示例详解
Aug 27 #Python
深入学习Python中的上下文管理器与else块
Aug 27 #Python
python利用MethodType绑定方法到类示例代码
Aug 27 #Python
Python中使用haystack实现django全文检索搜索引擎功能
Aug 26 #Python
python读取excel表格生成erlang数据
Aug 26 #Python
使用Python实现简单的服务器功能
Aug 25 #Python
You might like
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
php实现购物车功能(下)
2016/01/05 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
非常经典的PHP文件上传类分享
2016/05/15 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
php/JS实现的生成随机密码(验证码)功能示例
2019/06/06 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
浏览器脚本兼容 文本框中,回车键触发事件的兼容
2010/06/21 Javascript
JsDom 编程小结
2011/08/09 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
浅析ES6的八进制与二进制整数字面量
2016/08/30 Javascript
关于js原型的面试题讲解
2016/09/25 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
Angular.JS实现无限级的联动菜单(使用demo)
2017/02/08 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
2017/04/13 jQuery
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
分享19个JavaScript 有用的简写写法
2017/07/07 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python自动化脚本安装指定版本python环境详解
2017/09/14 Python
Python绘制并保存指定大小图像的方法
2019/01/10 Python
Python程序暂停的正常处理方法
2019/11/07 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
python3爬虫中多线程进行解锁操作实例
2020/11/25 Python
诺心蛋糕官网:LE CAKE
2018/08/25 全球购物
Linux常见面试题
2013/03/18 面试题
总经理助理岗位职责范本
2015/03/31 职场文书
品德与社会教学反思
2016/02/24 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书
聊一聊python常用的编程模块
2021/05/14 Python
Python中字符串对象语法分享
2022/02/24 Python
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL