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


相关推荐: 百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  非常酷的网站设计制作软件,酷培ai教育官方网站?  如何在景安服务器上快速搭建个人网站?  网站制作企业,网站的banner和导航栏是指什么?  如何获取PHP WAP自助建站系统源码?  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  零基础网站服务器架设实战:轻量应用与域名解析配置指南  如何在阿里云虚拟服务器快速搭建网站?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  如何在腾讯云免费申请建站?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  如何用花生壳三步快速搭建专属网站?  Python文件流缓冲机制_IO性能解析【教程】  教你用AI将一段旋律扩展成一首完整的曲子  微信小程序 wx.uploadFile无法上传解决办法  公司网站制作需要多少钱,找人做公司网站需要多少钱?  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  详解Huffman编码算法之Java实现  如何在IIS中配置站点IP、端口及主机头?  免费网站制作appp,免费制作app哪个平台好?  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  如何用PHP工具快速搭建高效网站?  Laravel怎么使用Intervention Image库处理图片上传和缩放  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  Java解压缩zip - 解压缩多个文件或文件夹实例  香港服务器网站推广:SEO优化与外贸独立站搭建策略  Python制作简易注册登录系统  大学网站设计制作软件有哪些,如何将网站制作成自己app?  如何用PHP快速搭建CMS系统?  如何快速搭建高效香港服务器网站?  LinuxShell函数封装方法_脚本复用设计思路【教程】  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  Laravel怎么上传文件_Laravel图片上传及存储配置  如何在万网主机上快速搭建网站?  Laravel如何处理CORS跨域请求?(配置示例)  如何在IIS管理器中快速创建并配置网站?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何在IIS中新建站点并解决端口绑定冲突?  新三国志曹操传主线渭水交兵攻略  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践