首页 > 解决方案 > 如何以 plist 或 zip 格式读写二进制数据?

问题描述

f.pk基本上是一个base64 + zip的容器,我需要在Python中导入并提取。zip文件p.plistf.pk = path + name + data.p.plist

我找不到任何工作编码open()codecs.open()将其作为 str 打开并保存输出。我总是有一个output.plist与原始不同的生成。

我已经使用的编码包括 ASCII;UTF-x; 拉丁语_1;ISO-x;

import codecs, os

with open('f.pk', 'r', encoding='Latin_1') as f:
    f_open = f.read()

with codecs.open('f.pk', 'r', encoding='zip') as f:
    f_open = f.read()

f2=f_open[3:] #SKIP DUMMY PART
f3=f2.split('-DATA-')
f4=f3[1].split('-COMMENT-')

with open('output.plist', 'w') as f:
    print(f_out, file=f)

original.plist = 5e03964972def5b83880397b7377e6d1aea33e2b
output.plist = 6473aea0ae8bc75a04859effe1ee366de4cdd2d2

我已经深入分析了这两个文件:
两个文件没有成功。

标签: pythonencodingbinaryplist

解决方案


with open('file.pk', 'rb') as f:
    f_open = f.read()

# do something with bytes here

with open('p.temp', 'wb') as f:
    pickle.dump(f_bytes, f) # temp file

# reload temp file
with open("p.temp", 'rb') as f:
    data = f.read()

# skip encodings and skip unwanted bytes
data = data[4:-3]

# save it
with open('p.plist', 'wb') as f:
    f.write(data)

os.remove('p.temp')

推荐阅读