You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 2.7.14脚本保存adb devices输出至文本文件求助

解决Python 2.7脚本保存ADB设备输出到文件的问题

嘿,我来帮你搞定这个问题!你的脚本核心功能没问题,但在获取命令输出和写入文件的部分踩了两个小坑,咱们一步步来修正:

你之前代码的问题分析

  1. str()函数用法错误:Python 2里的str()不能像你那样传入多个参数来拼接字符串,这会直接触发报错,导致后续的文件创建代码根本没执行到,所以你看不到logfile.txt。
  2. os.system()不返回命令输出:这个函数只会返回命令执行的状态码(0表示成功,非0表示失败),而不是你在控制台看到的设备列表内容,所以就算你把它转成字符串,写入的也只是个数字,不是你想要的输出。

修正后的代码方案

我们可以用Python 2里的工具来获取命令的输出,同时正确拼接内容并写入文件。这里给你两种可行的写法:

方法1:用commands模块(简单直接,Python2专用)

import os
import time
import commands  # 导入模块获取命令输出

print 'Current Directory:', os.getcwd()
print 'Opening Android SDK...'
os.chdir('C:\\android-sdk\\platform-tools')
print 'Current Directory:', os.getcwd()

t = time.ctime()
# 获取adb命令的完整输出内容
adb_output = commands.getoutput('adb devices -l')
# 拼接要写入的内容,添加换行符让格式更清晰
content = t + '\n' + 'Checking for connected devices:' + '\n' + adb_output + '\n'

# 用with语句打开文件,自动处理关闭操作,避免遗漏close()导致的问题
with open('logfile.txt', 'w') as f:
    f.write(content)

# 可选:打印提示,确认文件已保存
print '输出已保存到logfile.txt'

方法2:用subprocess模块(推荐,兼容Python2和Python3)

如果你以后计划升级到Python3,这个写法几乎不用改动:

import os
import time
import subprocess

print 'Current Directory:', os.getcwd()
print 'Opening Android SDK...'
os.chdir('C:\\android-sdk\\platform-tools')
print 'Current Directory:', os.getcwd()

t = time.ctime()
# 执行adb命令并捕获输出,Python2需指定shell=True
adb_output = subprocess.check_output('adb devices -l', shell=True)
# 拼接内容,Python2中字节串可直接与字符串拼接
content = t + '\n' + 'Checking for connected devices:' + '\n' + adb_output

with open('logfile.txt', 'w') as f:
    f.write(content)

print '输出已保存到logfile.txt'

额外提示

  • 你的logfile.txt会被创建在切换后的目录(C:\android-sdk\platform-tools),如果找不到可以去这个路径下查看。
  • 用with语句管理文件比手动调用f.close()更稳妥,就算脚本中途报错,文件也会自动关闭,避免数据丢失。

内容的提问来源于stack exchange,提问作者elarinya17

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:14:13