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中精确输出JSON浮点数的方法
Apr 18 Python
python3.5使用tkinter制作记事本
Jun 20 Python
Python Paramiko模块的使用实际案例
Feb 01 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 26 Python
详解python配置虚拟环境
Apr 08 Python
django项目简单调取百度翻译接口的方法
Aug 06 Python
Python日期格式和字符串格式相互转换的方法
Feb 18 Python
Python 的 __str__ 和 __repr__ 方法对比
Sep 02 Python
Python-typing: 类型标注与支持 Any类型详解
May 10 Python
学会用Python实现滑雪小游戏,再也不用去北海道啦
May 20 Python
使用pycharm运行flask应用程序的详细教程
Jun 07 Python
如何利用python创作字符画
Jun 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邮件发送的两种方式
2020/04/28 PHP
Zend Framework教程之Application和Bootstrap用法详解
2016/03/10 PHP
php实现mysql连接池效果实现代码
2018/01/25 PHP
JavaScript入门教程 Cookies
2009/01/31 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
2013/09/02 Javascript
jquery取消选择select下拉框示例代码
2014/02/22 Javascript
JavaScript中window.showModalDialog()用法详解
2014/12/18 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
jquery密码强度校验
2015/12/02 Javascript
JavaScript &amp; jQuery完美判断图片是否加载完毕
2017/01/08 Javascript
vue中 this.$set的用法详解
2019/09/06 Javascript
JS数组splice操作实例分析
2019/10/12 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
python安装cx_Oracle模块常见问题与解决方法
2017/02/21 Python
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
python关于矩阵重复赋值覆盖问题的解决方法
2019/07/19 Python
python进程间通信Queue工作过程详解
2019/11/01 Python
pytorch GAN伪造手写体mnist数据集方式
2020/01/10 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
美国眼镜网站:EyeBuyDirect
2017/04/13 全球购物
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
面料业务员岗位职责
2013/12/26 职场文书
竞聘副主任科员演讲稿
2014/01/11 职场文书
公司会计岗位职责
2014/02/13 职场文书
社区母亲节活动记录
2014/03/06 职场文书
资源环境与城乡规划管理专业自荐书
2014/09/26 职场文书
2014年公路养护工作总结
2014/12/04 职场文书
房贷工资证明范本
2015/06/12 职场文书
女儿满月酒致辞
2015/07/29 职场文书
《玩出了名堂》教学反思
2016/02/17 职场文书
2019财务转正述职报告
2019/06/27 职场文书
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS