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写的Socks5协议代理服务器
Aug 06 Python
Python的Flask框架中@app.route的用法教程
Mar 31 Python
python统计cpu利用率的方法
Jun 02 Python
Pandas读取MySQL数据到DataFrame的方法
Jul 25 Python
python 实现在一张图中绘制一个小的子图方法
Jul 07 Python
python制作朋友圈九宫格图片
Nov 03 Python
如何利用pygame实现简单的五子棋游戏
Dec 29 Python
Pytorch之parameters的使用
Dec 31 Python
关于Pytorch的MNIST数据集的预处理详解
Jan 10 Python
python实现用类读取文件数据并计算矩形面积
Jan 18 Python
python正则表达式实例代码
Mar 03 Python
Python descriptor(描述符)的实现
Nov 15 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 数组实例说明
2008/08/18 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
2012/05/31 PHP
CI框架入门示例之数据库取数据完整实现方法
2014/11/05 PHP
PHP中文竖排转换实现方法
2015/10/23 PHP
php compact 通过变量创建数组
2016/11/15 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
asp.net和asp下ACCESS的参数化查询
2008/06/11 Javascript
jquery 单引号和双引号的区别及使用注意
2013/07/31 Javascript
document.getElementBy(&quot;id&quot;)与$(&quot;#id&quot;)有什么区别
2013/09/22 Javascript
jquery中radio checked问题
2015/03/16 Javascript
AspNet中使用JQuery上传插件Uploadify详解
2015/05/20 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
html+js+highcharts绘制圆饼图表的简单实例
2016/08/04 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
2018/04/21 Javascript
了解JavaScript函数中的默认参数
2019/05/30 Javascript
详细分析vue响应式原理
2020/06/22 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
python3实现跳一跳点击跳跃
2018/01/08 Python
Python快速查找list中相同部分的方法
2018/06/27 Python
详解程序意外中断自动重启shell脚本(以Python为例)
2019/07/26 Python
Python 没有main函数的原因
2020/07/10 Python
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
全球最大的中文旅行网站:去哪儿网
2017/11/16 全球购物
委托证明的格式
2014/01/10 职场文书
小摄影师教学反思
2014/04/27 职场文书
促销活动总结模板
2014/07/01 职场文书
合作协议书范文
2014/08/20 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
生日寿星公答谢词
2015/09/29 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
tensorflow中的梯度求解及梯度裁剪操作
2021/05/26 Python
python 爬取吉首大学网站成绩单
2021/06/02 Python