新闻中心

关于Python脚本中执行adb命令的方法

2025-12-04
浏览次数:
返回列表
Python中执行ADB命令应使用subprocess模块,参数以列表形式传入、禁用shell=True、检查returncode或启用check=True、用Popen实现持续交互。

关于python脚本中执行adb命令的方法

在Python脚本中执行ADB命令,核心是调用系统命令行工具,常用方式是 subprocess 模块,它比已弃用的 os.system 更安全、可控,能捕获输出、处理错误、传参灵活。

使用 subprocess.run 执行简单ADB命令

适合一次性命令,如查看设备、安装APK、截图等。推荐设置 shell=False(默认),避免shell注入风险;若需管道或重定向,再设为 True

  • 检查设备连接:subprocess.run(["adb", "devices"], capture_output=True, text=True)
  • 安装APK:subprocess.run(["adb", "install", "app.apk"])
  • 获取设备型号:result = subprocess.run(["adb", "shell", "getprop", "ro.product.model"], capture_output=True, text=True); print(result.stdout.strip())

处理ADB命令的返回值与错误

ADB执行失败时通常返回非0退出码,但不会自动抛异常。建议显式检查 returncode,或使用 check=True 让失败时触发 subprocess.CalledProcessError

  • 捕获并判断结果:result = subprocess.run([...]); if result.returncode != 0: print("ADB命令失败:", result.stderr)
  • 自动报错(简洁写法):subprocess.run(["adb", "reboot"], check=True)
  • 超时控制防卡死:subprocess.run(["adb", "shell", "ping -c 3 8.8.8.8"], timeout=10)

向ADB命令传递动态参数(如包名、文件路径)

避免字符串拼接(易出错且不安全),应将参数作为列表元素传入。路径含空格也不需额外处理,subprocess会自动转义。

Python精要参考 pdf版 Python精要参考 pdf版

这本书给出了一份关于python这门优美语言的精要的参考。作者通过一个完整而清晰的入门指引将你带入python的乐园,随后在语法、类型和对象、运算符与表达式、控制流函数与函数编程、类及面向对象编程、模块和包、输入输出、执行环境等多方面给出了详尽的讲解。如果你想加入 python的世界,D*id M beazley的这本书可不要错过哦。 (封面是最新英文版的,中文版貌似只译到第二版)

Python精要参考 pdf版 9 查看详情 Python精要参考 pdf版
  • 启动指定Activity:pkg = "com.example.app"; activity = ".MainActivity"; subprocess.run(["adb", "shell", "am", "start", "-n", f"{pkg}/{activity}"])
  • 推送文件到设备:local_path = "/path/with spaces/file.txt"; remote_path = "/sdcard/file.txt"; subprocess.run(["adb", "push", local_path, remote_path])
  • 注意:不要写成 f"adb shell am start -n {pkg}/{activity}" —— 这属于shell模式,有安全隐患且跨平台兼容差

进阶:持续交互式ADB会话(如logcat监听)

subprocess.Popen 启动长期进程,实时读取stdout流,适合抓日志、监听广播等场景。

  • 实时打印logcat:proc = subprocess.Popen(["adb", "logcat", "-v", "time"], stdout=subprocess.PIPE, text=True); for line in proc.stdout: print(line.strip())
  • 终止进程:proc.terminate()proc.kill()
  • 注意:确保编码一致(Android logcat默认UTF-8),Windows下可能需加 encoding="utf-8"

基本上就这些。只要记住用 subprocess、参数拆成列表、检查返回值、避免 shell=True 乱拼字符串,ADB 调用就能既稳定又安全。

以上就是关于Python脚本中执行adb命令的方法的详细内容,更多请关注其它相关文章!


# 应用技巧  # 峨眉山网站推广营销策划  # 深州律师网站推广平台  # 徐州seo按天收费  # 郑州优化网站排名  # 江门网络营销推广工具  # seo优化课程影响网站收录  # 合肥网站优化排名推广  # 呼和浩特网站建设方式  # 公司网站建设推广服务商  # 天长百度seo网站优化  # 就能  # 全局变量  # 进阶  # 返回值  # python  # 做多  # 如何使用  # 这本书  # 出了  # 递归  # python脚本  # win  # ai  # 工具  # app  # 编码  # windows  # android  # adb命令 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: JUnit5/Mockito:优雅测试内部依赖与异常处理的实践  Composer中的^和~符号代表什么_精通Composer版本号语义化约束  电脑IP地址怎么查 查看本机IP地址的几种方法  探索高级语言到C/C++的转译路径:以Go为例及内存管理策略  在VS Code中配置和运行Dart程序的完整步骤  Excel中VLOOKUP的第四个参数是干什么用的_Excel VLOOKUP第四参数作用解析  实现分段式页面滚动导航:CSS与J*aScript教程  Go语言中Map存储的结构体如何调用指针方法:深入解析与实践  Discord Slash 命令响应超时问题的异步解决方案  如何在Python中使用Optional类型处理可变对象并避免Pylint警告  解决J*aScript中重复选择项的确认对话框显示问题  React/Next.js中实现列表项的动态移动与状态管理:兼论唯一键的重要性  Composer的 "conflict" 字段有什么用_如何声明不兼容的包以避免依赖冲突  现代化 SciPy 一维插值:interp1d 的替代方案与最佳实践  Bilibili动漫最新防封地址发布-Bilibili动漫2025年最稳正版入口推荐  俄罗斯Yandex搜索引擎入口_Yandex官网免登录一键访问  怎么在html里运行vbs脚本_html中运行vbs脚本方法【教程】  C++如何生成随机数_C++ random库使用方法与范围设置  PHP中SSG-WSG API的AES加密实践:正确使用初始化向量  神庙逃亡小游戏在线玩 神庙逃亡小游戏入口  Go Martini框架:动态服务解码后的图片内容  DLsite中文平台入口 DLsite官网内容在线查看  Python模块化编程:有效管理依赖与避免循环引用  QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用  Golang如何实现状态模式管理对象状态_Golang State模式实现技巧  12306选座怎么选到特殊座位_12306特殊座位选择注意事项  微信商城在哪里打开【步骤】  微信网页版登录教程_微信网页版登录入口在哪  Excel Power Pivot如何处理XML数据源 构建高级数据模型  微信聊天记录怎么加密_微信聊天记录加密方法  解决Rails应用中内容错位与Turbo警告:meta标签误用导致富文本渲染异常  漫蛙漫画网页端入口 漫蛙2官方正版漫画站点  深入理解字体排版:Adobe光学字偶距与CSS字偶距的差异与实现  如何在CSS中使用visited与link控制链接颜色_visited link伪类配合  excel怎么制作工资条 excel快速生成工资条的方法  高德地图沿途添加点失败如何解决 高德多点规划方法  windows10怎么查看本机ip_windows10命令提示符ipconfig使用  如何创建独立于主系统的J*a运行环境_隔离式环境搭建策略  yy漫画网页版官方入口_yy漫画官网登录页面链接  高德地图公交到站提醒失败如何解决 高德提醒权限设置  豆包手机助手发布技术预览版:直接嵌入手机系统!努比亚样机发售  漫蛙2网页版漫画入口 漫蛙漫画在线官方登录  在Go语言中利用后缀数组处理多字符串:实现高效文本匹配与自动补全  在FastAPI中利用lifespan与依赖注入高效管理Redis连接池  css链接悬停下划线样式如何自定义_使用::after结合content和transition  Golang如何测试channel通信行为_Golang channel通信测试与分析方法  动漫岛观看全网网 动漫岛在线正版动漫入口  新手怎么开始学化妆 零基础化妆入门教程  Django表单提交验证失败后保持字段值不刷新  Yandex官网免登录入口_俄罗斯Yandex搜索引擎一键访问 

搜索