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 相关文章推荐
深入理解NumPy简明教程---数组1
Dec 17 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
Oct 14 Python
Python中的四种交换数值的方法解析
Nov 18 Python
python实现飞机大战项目
Mar 11 Python
Python应用实现处理excel数据过程解析
Jun 19 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
Jun 30 Python
Python 存取npy格式数据实例
Jul 01 Python
pycharm远程连接服务器并配置python interpreter的方法
Dec 23 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
Feb 22 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
Feb 25 Python
基于tensorflow __init__、build 和call的使用小结
Feb 26 Python
用Python的绘图库(matplotlib)绘制小波能量谱
Apr 17 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
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
2006/07/09 PHP
php htmlspecialchars加强版
2010/02/16 PHP
PHP中shuffle数组值随便排序函数用法
2014/11/21 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
PHP用continue跳过本次循环中剩余代码的注意点
2017/06/27 PHP
php并发加锁问题分析与设计代码实例讲解
2021/02/26 PHP
Firefox div高度自适应
2009/04/28 Javascript
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
jquery实现div阴影效果示例代码
2013/09/16 Javascript
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
JavaScript学习笔记之Function对象
2015/01/22 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
jquery解析XML及获取XML节点名称的实现代码
2016/05/18 Javascript
Popup弹出框添加数据实现方法
2017/10/27 Javascript
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
webpack+vue-cil中proxyTable处理跨域的方法
2018/07/20 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
vue项目上传Github预览的实现示例
2018/11/06 Javascript
深入Node TCP模块的理解
2019/03/13 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
JQuery基于FormData异步提交数据文件
2020/09/01 jQuery
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
python搭建服务器实现两个Android客户端间收发消息
2018/04/12 Python
澳大利亚排名第一的在线酒类商店:MyBottleShop
2018/04/26 全球购物
Wallis官网:英国女装零售商
2020/01/21 全球购物
中学教师培训制度
2014/01/31 职场文书
新教师工作感言
2014/02/16 职场文书
秘书英文求职信
2014/04/16 职场文书
婚纱店策划方案
2014/05/22 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
2014年仓库管理员工作总结
2014/11/18 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
银行柜员优质服务心得体会
2016/01/22 职场文书
SqlServer: 如何更改表的文件组?(进而改变存储位置)
2021/04/05 SQL Server