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实现的检测网站挂马程序
Nov 30 Python
浅谈python jieba分词模块的基本用法
Nov 09 Python
Python实现PS滤镜碎片特效功能示例
Jan 24 Python
python增加矩阵维度的实例讲解
Apr 04 Python
Python中__slots__属性介绍与基本使用方法
Sep 05 Python
python使用suds调用webservice接口的方法
Jan 03 Python
使用python实现ftp的文件读写方法
Jul 02 Python
解决Python安装时报缺少DLL问题【两种解决方法】
Jul 15 Python
Tensorflow Summary用法学习笔记
Jan 10 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
Feb 17 Python
Python爬虫之Spider类用法简单介绍
Aug 04 Python
Python字符串查找基本操作代码案例
Oct 27 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 setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
php 数组使用详解 推荐
2011/06/02 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
PHP调用MySQL存储过程并返回值的方法
2014/12/26 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
分享10段PHP常用代码
2015/11/11 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
jquery $.trim()方法使用介绍
2014/05/21 Javascript
js关于命名空间的函数实例
2015/02/05 Javascript
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
详解js跨域原理以及2种解决方案
2015/12/09 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
一百行JS代码实现一个校验工具
2019/04/30 Javascript
JavaScript工具库之Lodash详解
2019/06/15 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
2020/06/02 Javascript
从Python的源码来解析Python下的freeblock
2015/05/11 Python
详解django2中关于时间处理策略
2019/03/06 Python
详解python中init方法和随机数方法
2019/03/13 Python
详解Python正则表达式re模块
2019/03/19 Python
Python进程间通信Queue消息队列用法分析
2019/05/22 Python
python定位xpath 节点位置的方法
2019/08/27 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
常用python爬虫库介绍与简要说明
2020/01/25 Python
Python tkinter制作单机五子棋游戏
2020/09/14 Python
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
学校采购员岗位职责
2014/01/02 职场文书
对外汉语专业大学生职业生涯规划范文
2014/09/13 职场文书
先进典型发言材料
2014/12/30 职场文书
餐饮服务食品安全承诺书
2015/04/29 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
Nginx已编译的nginx-添加新模块
2021/04/01 Servers
python 爬取豆瓣网页的示例
2021/04/13 Python
python 如何获取页面所有a标签下href的值
2021/05/06 Python