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 网络编程起步(Socket发送消息)
Sep 06 Python
pymssql ntext字段调用问题解决方法
Dec 17 Python
python thrift搭建服务端和客户端测试程序
Jan 17 Python
Python断言assert的用法代码解析
Feb 03 Python
详解Python 解压缩文件
Apr 09 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
Jul 31 Python
python中列表的含义及用法
May 26 Python
Python基于BeautifulSoup爬取京东商品信息
Jun 01 Python
Python代码注释规范代码实例解析
Aug 14 Python
Python3 用matplotlib绘制sigmoid函数的案例
Dec 11 Python
python 中[0]*2与0*2的区别说明
May 10 Python
python中pd.cut()与pd.qcut()的对比及示例
Jun 16 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获取当前url路径的函数以及服务器变量
2013/06/29 PHP
php绘制一条弧线的方法
2015/01/24 PHP
PHP常用函数总结(180多个)
2016/12/25 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
PHP接入支付宝接口失效流程详解
2020/11/10 PHP
javascript 动态添加事件代码
2008/11/30 Javascript
关于onScroll事件在IE6下每次滚动触发三次bug说明
2011/09/21 Javascript
js跑步算法的实现代码
2013/12/04 Javascript
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
jQuery获得document和window对象宽度和高度的方法
2015/03/25 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
如何理解jQuery中的ajaxSubmit方法
2017/03/13 Javascript
React.Js添加与删除onScroll事件的方法详解
2017/11/03 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
vue中改变滚动条样式的方法
2020/03/03 Javascript
python实现的重启关机程序实例
2014/08/21 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
python数字类型math库原理解析
2020/03/02 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
香港迪士尼乐园酒店预订:Hong Kong Disneyland Hotels
2017/05/02 全球购物
日本航空官方网站:JAL
2019/06/19 全球购物
科颜氏香港官方网店:Kiehl’s香港
2021/03/07 全球购物
环境工程毕业生自荐信
2013/11/17 职场文书
心理健康课教学反思
2014/02/13 职场文书
保密工作整改报告
2014/11/06 职场文书
学校食堂食品安全承诺书
2015/04/29 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
python数据可视化使用pyfinance分析证券收益示例详解
2021/11/20 Python