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实现的异步代理爬虫及代理池
Mar 17 Python
django 常用orm操作详解
Sep 13 Python
Python抓取框架Scrapy爬虫入门:页面提取
Dec 01 Python
对Python3之方法的覆盖与super函数详解
Jun 26 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
Jul 03 Python
解决django后台管理界面添加中文内容乱码问题
Nov 15 Python
Python 实现日志同时输出到屏幕和文件
Feb 19 Python
python使用paramiko实现ssh的功能详解
Mar 06 Python
django-利用session机制实现唯一登录的例子
Mar 16 Python
Python打包为exe详细教程
May 18 Python
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 Python
Python3使用Qt5来实现简易的五子棋小游戏
May 02 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
centos 5.6 升级php到5.3的方法
2011/05/14 PHP
php实现利用phpexcel导出数据
2013/08/24 PHP
php实现把数组按指定的个数分隔
2014/02/17 PHP
codeigniter中实现一次性加载多个view的方法
2015/03/20 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
2017/08/03 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
PHPUnit + Laravel单元测试常用技能
2019/11/06 PHP
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
Js 弹出框口并返回值的两种常用方法
2010/12/30 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
2014/06/20 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
JavaSacript中charCodeAt()方法的使用详解
2015/06/05 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
vue-router实现webApp切换页面动画效果代码
2017/05/25 Javascript
详细介绍RxJS在Angular中的应用
2017/09/23 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
如何用原生js写一个弹窗消息提醒插件
2019/05/24 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
2019/11/18 jQuery
Python 基础知识之字符串处理
2017/01/06 Python
Python闭包函数定义与用法分析
2018/07/20 Python
python3 求约数的实例
2019/12/05 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
Selenium环境变量配置(火狐浏览器)及验证实现
2020/12/07 Python
HTML5 video视频字幕的使用和制作方法
2018/05/03 HTML / CSS
ziaja齐叶雅官方海外旗舰店:来自波兰的天然护肤品牌
2017/01/02 全球购物
百度JavaScript笔试题
2015/01/15 面试题
高分子材料与工程专业个人求职信
2013/12/15 职场文书
销售经理工作职责
2014/02/03 职场文书
领导失职检讨书
2014/02/24 职场文书
消防安全员岗位职责
2014/03/10 职场文书
工作目标责任书
2014/07/23 职场文书
高中数学课堂教学反思
2016/02/18 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书
python实现简单的三子棋游戏
2022/04/28 Python