Python如何通过subprocess调用adb命令详解

发布时间 - 2026-01-11 02:58:56    点击率:

前言

本文主要给大家介绍了关于使用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  # adb命令  # python调用adb命令  # 调用adb  # shell  # python使用ctypes库调用DLL动态链接库  # Python调用REST API接口的几种方式汇总  # 如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单  # python使用ctypes调用扩展模块的实例方法  # python中使用ctypes调用so传参设置遇到的问题及解决方法  # Python使用ctypes调用C/C++的方法  # python调用百度REST API实现语音识别  # python调用百度语音REST API  # Python调用C语言的方法【基于ctypes模块】  # Python 调用 ES、Solr、Phoenix的示例代码  # 是一个  # 其他的  # 给大家  # 这篇文章  # 谢谢大家  # 装了  # 主要功能  # 装好  # 打印出来  # 有疑问  # class  # brush  # import  # py  # methods  # pre  # Adb  # def  # staticmethod  # adb_devices 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在IIS7中新建站点?详细步骤解析  EditPlus中的正则表达式 实战(2)  浅谈redis在项目中的应用  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  详解Android图表 MPAndroidChart折线图  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  怎么用AI帮你为初创公司进行市场定位分析?  C++时间戳转换成日期时间的步骤和示例代码  移动端脚本框架Hammer.js  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  Android中AutoCompleteTextView自动提示  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  北京网站制作的公司有哪些,北京白云观官方网站?  如何在腾讯云服务器上快速搭建个人网站?  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  JavaScript如何操作视频_媒体API怎么控制播放  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  Bootstrap整体框架之CSS12栅格系统  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  javascript中的try catch异常捕获机制用法分析  使用spring连接及操作mongodb3.0实例  Laravel如何实现本地化和多语言支持?(i18n教程)  教学论文网站制作软件有哪些,写论文用什么软件 ?  详解Oracle修改字段类型方法总结  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  Laravel模型事件有哪些_Laravel Model Event生命周期详解  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  如何在云主机快速搭建网站站点?  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  JavaScript如何实现倒计时_时间函数如何精确控制  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  南京网站制作费用,南京远驱官方网站?  Angular 表单中正确绑定输入值以确保提交与验证正常工作  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  文字头像制作网站推荐软件,醒图能自动配文字吗?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  Python面向对象测试方法_mock解析【教程】  如何为不同团队 ID 动态生成多个非值班状态按钮  香港服务器WordPress建站指南:SEO优化与高效部署策略  php打包exe后无法访问网络共享_共享权限设置方法【教程】  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  如何自定义建站之星网站的导航菜单样式?