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转码问题的解决方法
Oct 07 Python
python 实现在txt指定行追加文本的方法
Apr 29 Python
Python读取excel中的图片完美解决方法
Jul 27 Python
Python二叉树的镜像转换实现方法示例
Mar 06 Python
python-tkinter之按钮的使用,开关方法
Jun 11 Python
Python lambda表达式filter、map、reduce函数用法解析
Sep 11 Python
通过字符串导入 Python 模块的方法详解
Oct 27 Python
Python和Sublime整合过程图示
Dec 25 Python
python实现数字炸弹游戏程序
Jul 17 Python
Python实现简单的猜单词小游戏
Oct 28 Python
Python3+Django get/post请求实现教程详解
Feb 16 Python
Pandas实现DataFrame的简单运算、统计与排序
Mar 31 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数组相关函数汇总
2015/03/24 PHP
PHP如何通过date() 函数格式化显示时间
2020/11/13 PHP
VBScript版代码高亮
2006/06/26 Javascript
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
详解Angularjs中的依赖注入
2016/03/11 Javascript
jquery获取所有选中的checkbox实现代码
2016/05/26 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
解析Vue 2.5的Diff算法
2017/11/28 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
vue: WebStorm设置快速编译运行的方法
2018/10/18 Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
2019/05/18 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
学习RxJS之JavaScript框架Cycle.js
2019/06/17 Javascript
Vue基于localStorage存储信息代码实例
2020/11/16 Javascript
vue-drawer-layout实现手势滑出菜单栏
2020/11/19 Vue.js
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
快速查询Python文档方法分享
2017/12/27 Python
python3实现域名查询和whois查询功能
2018/06/21 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
python实现计数排序与桶排序实例代码
2019/03/28 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
python简单的三元一次方程求解实例
2020/04/02 Python
Python如何读取、写入CSV数据
2020/07/28 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
2020/11/10 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
超市优秀员工事迹材料
2014/05/01 职场文书
工作散漫检讨书
2014/09/16 职场文书
个人批评与自我批评
2014/10/15 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
民主评议政风行风活动心得体会
2014/10/29 职场文书
创业方案:赚钱的烧烤店该怎样做?
2019/07/05 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL