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多线程编程(四):使用Lock互斥锁
Apr 05 Python
python学习之hook钩子的原理和使用
Oct 25 Python
Python/ArcPy遍历指定目录中的MDB文件方法
Oct 27 Python
Python操作Excel插入删除行的方法
Dec 10 Python
在python中,使用scatter绘制散点图的实例
Jul 03 Python
Python实现的统计文章单词次数功能示例
Jul 08 Python
Python将列表中的元素转化为数字并排序的示例
Dec 25 Python
python3 实现口罩抽签的功能
Mar 11 Python
jupyter notebook 多环境conda kernel配置方式
Apr 10 Python
python中JWT用户认证的实现
May 18 Python
Python基于xlrd模块处理合并单元格
Jul 28 Python
Python实现淘宝秒杀功能的示例代码
Jan 19 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
牡丹941资料
2021/03/01 无线电
用PHP实现递归循环每一个目录
2010/08/08 PHP
PHP的魔术常量__METHOD__简介
2014/07/08 PHP
php数组转成json格式的方法
2015/03/09 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
PHP获取对象属性的三种方法实例分析
2019/01/03 PHP
用JQuery 实现的自定义对话框
2007/03/24 Javascript
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
javascript验证只能输入数字和一个小数点示例
2013/10/21 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
2013/10/24 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
原生js实现倒计时--2018
2017/02/21 Javascript
vue-cli + sass 的正确打开方式图文详解
2017/10/27 Javascript
JS中promise化微信小程序api
2018/04/12 Javascript
js canvas实现星空连线背景特效
2019/11/01 Javascript
vue fetch中的.then()的正确使用方法
2020/04/17 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
Python基于pygame实现图片代替鼠标移动效果
2015/11/11 Python
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
Python更新数据库脚本两种方法及对比介绍
2017/07/27 Python
Python实现FTP文件传输的实例
2019/07/07 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
python实现企业微信定时发送文本消息的示例代码
2020/11/24 Python
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
怀旧收藏品和经典纪念品:Betty’s Attic
2018/08/29 全球购物
电子商务毕业生求职信
2013/11/10 职场文书
节约用电倡议书
2015/04/28 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书
在Django中使用MQTT的方法
2021/05/10 Python
python基础学习之生成器与文件系统知识总结
2021/05/25 Python
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL
Pygame Event事件模块的详细示例
2021/11/17 Python
Vue组件化(ref,props, mixin,.插件)详解
2022/05/15 Vue.js