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的ORM框架SQLObject入门实例
Apr 28 Python
Python的__builtin__模块中的一些要点知识
May 02 Python
详解在Python程序中解析并修改XML内容的方法
Nov 16 Python
Python匹配中文的正则表达式
May 11 Python
Python优化技巧之利用ctypes提高执行速度
Sep 11 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
Jun 11 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
Apr 29 Python
python学生信息管理系统实现代码
Dec 17 Python
Python API len函数操作过程解析
Mar 05 Python
解决pycharm下pyuic工具使用的问题
Apr 08 Python
浅谈keras使用中val_acc和acc值不同步的思考
Jun 18 Python
Python 远程开关机的方法
Nov 18 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
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
header()函数使用说明
2006/11/23 PHP
Laravel5中contracts详解
2015/03/02 PHP
Zend Framework动作助手Json用法实例分析
2016/03/05 PHP
PHP中如何判断exec函数执行成功?
2016/08/04 PHP
示例详解Laravel的注册重构
2016/08/14 PHP
15 个 JavaScript Web UI 库
2010/05/19 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
上传的js验证(图片/文件的扩展名)
2013/04/25 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
JS实现在网页中弹出一个输入框的方法
2015/03/03 Javascript
招聘网站基于jQuery实现自动刷新简历
2015/05/10 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
AngularJs 指令详解及示例代码
2016/09/01 Javascript
angular.fromJson与toJson方法用法示例
2017/05/17 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
2017/08/18 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
Python 错误和异常小结
2013/10/09 Python
零基础写python爬虫之打包生成exe文件
2014/11/06 Python
十个Python程序员易犯的错误
2015/12/15 Python
python套接字流重定向实例汇总
2016/03/03 Python
Django ImageFiled上传照片并显示的方法
2019/07/28 Python
Python 获取指定文件夹下的目录和文件的实现
2019/08/30 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
Django使用Celery加redis执行异步任务的实例内容
2020/02/20 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
护理专业毕业生自我鉴定
2013/10/08 职场文书
给排水专业应届生求职信
2013/10/12 职场文书
留学顾问岗位职责
2014/04/14 职场文书
交通事故赔偿协议书范本
2014/04/15 职场文书
小学生清明节演讲稿
2014/09/05 职场文书
党校学习个人总结
2015/02/15 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书
大学生活感想
2015/08/10 职场文书