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使用multiprocessing模块实现带回调函数的异步调用方法
Apr 18 Python
python查询sqlite数据表的方法
May 08 Python
各个系统下的Python解释器相关安装方法
Oct 12 Python
python中异常捕获方法详解
Mar 03 Python
python读取二进制mnist实例详解
May 31 Python
Python语言生成水仙花数代码示例
Dec 18 Python
python cs架构实现简单文件传输
Mar 20 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
May 15 Python
numpy.meshgrid()理解(小结)
Aug 01 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
Jul 01 Python
python爬虫中url管理器去重操作实例
Nov 30 Python
Python实战之实现简易的学生选课系统
May 25 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桌面中心(三) 修改数据库
2007/03/11 PHP
php构造函数实例讲解
2013/11/13 PHP
php命令行用法入门实例教程
2014/10/27 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
yii2 url重写并隐藏index.php方法
2018/12/10 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
jquery插件制作简单示例说明
2012/02/03 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
jQuery简单实现验证邮箱格式
2015/07/15 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
使用javascript插入样式
2016/03/14 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
2016/06/01 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
在Python的Django框架中调用方法和处理无效变量
2015/07/15 Python
Django中对数据查询结果进行排序的方法
2015/07/17 Python
用Python实现斐波那契(Fibonacci)函数
2016/03/25 Python
详解python中的json的基本使用方法
2016/12/21 Python
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
2019/08/26 Python
Python代码块及缓存机制原理详解
2019/12/13 Python
python用Configobj模块读取配置文件
2020/09/26 Python
美国性感内衣店:Yandy
2018/06/12 全球购物
中东奢侈品市场:Coveti
2019/05/12 全球购物
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
Python面试题集
2012/03/08 面试题
艺术系大学生毕业个人自我评价
2013/09/19 职场文书
北京申奥口号
2014/06/19 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
招标保密承诺书
2015/01/20 职场文书