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

提取Android thumbdata3文件时遇TypeError错误求助

解决.thumbdata3提取图片时的TypeError问题

嘿,我来帮你搞定这个「需要类字节对象,而非'str'」的错误!这个问题其实很好解决,根源就在字符串和字节对象的类型不匹配上。

错误原因分析

你用rb模式读取.thumbdata3文件,得到的tdata是字节对象(bytes),但原脚本里的JPG起始标记ss = '\xff\xd8'和结束标记se = '\xff\xd9'是普通字符串(str)。字节对象的find()方法只能接受字节类型的参数,直接用字符串去查找自然会触发TypeError。

修改后的完整Python脚本

把标记改成字节类型(加b前缀),同时补全原脚本没写完的保存逻辑:

#!/usr/bin/python
"""extract files from Android thumbdata3 file"""

f = open('thumbdata3.dat', 'rb')
tdata = f.read()
f.close()

# 将字符串标记改为字节类型
ss = b'\xff\xd8'
se = b'\xff\xd9'
count = 0
start = 0

while True:
    x1 = tdata.find(ss, start)
    if x1 < 0:
        break
    x2 = tdata.find(se, x1)
    if x2 < 0:
        break
    # 提取JPG片段并保存
    jpg = tdata[x1:x2+2]
    count += 1
    filename = f'extracted_{count}.jpg'
    with open(filename, 'wb') as outfile:
        outfile.write(jpg)
    # 更新起始位置,继续查找下一张图
    start = x2 + 2

print(f'提取完成,共生成{count}张图片')

几个实用小提示

  • 确保脚本和你的.thumbdata3文件在同一个文件夹里,或者把'thumbdata3.dat'改成文件的完整路径(比如'C:/Users/xxx/Documents/thumbdata3.dat')
  • 500MB的文件用read()一次性读取没问题,如果是更大的文件,可以考虑分块读取来优化内存占用
  • 提取出的图片会以extracted_1.jpg、extracted_2.jpg这样的命名保存在脚本所在目录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:13:37