Python 2.7.14脚本保存adb devices输出至文本文件求助
解决Python 2.7脚本保存ADB设备输出到文件的问题
嘿,我来帮你搞定这个问题!你的脚本核心功能没问题,但在获取命令输出和写入文件的部分踩了两个小坑,咱们一步步来修正:
你之前代码的问题分析
str()函数用法错误:Python 2里的str()不能像你那样传入多个参数来拼接字符串,这会直接触发报错,导致后续的文件创建代码根本没执行到,所以你看不到logfile.txt。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
相关产品推荐
相关产品推荐

