python - 如何以 plist 或 zip 格式读写二进制数据?
问题描述
f.pk
基本上是一个base64 + zip的容器,我需要在Python中导入并提取。zip文件p.plist
是f.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
解决方案
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')
推荐阅读
- google-chrome - Safari 覆盖响应实时预览,有可能吗?
- matlab - 我们如何处理表格并使用它们的值进行计算?(对于初学者)
- ios - 如何丢弃 Swift 中当前正在运行的函数?
- node.js - MongoDB:如何按值查找文档?
- python - 端点中的 FastAPI 冲突路径参数 - 良好做法?
- css - 如何调整移动标志的大小
- android - 如何使用 LinearLayout 在中心添加 CardView
- javascript - 将值 {null} 转换为类型“System.Int32”时出错 400 错误
- azure-logic-apps - 在逻辑应用工作流中另存为 .PARQUET 文件
- react-native - 如何从导航器中的屏幕转到另一个导航器中的屏幕?