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

如何在无R解释器环境下用Python读取并反序列化R生成的序列化对象

R序列化文件无R依赖Python解析方案

问题背景

需要将R生成的序列化对象导入Python处理,当前使用的远程系统未安装R解释器,无法通过导出csv中转的常规方案实现。此前尝试pickle、json处理均未成功,需要无R依赖的解析方案。

原始R序列化生成逻辑

生成序列化文件的R代码如下:

x <- serialize(list(1,2,3), NULL, ascii=TRUE)
xzip <- memCompress(x,'bzip2')
to.write = file("./rbinfile.dat", "wb")
writeBin(xzip, to.write)
close(to.write)

现有Python代码问题

已实现的Python处理代码中,最后一步binascii.hexlify(x)为错误操作,会将解压得到的R序列化二进制流转为十六进制字符串,破坏原始数据结构,删除该步骤即可得到待解析的原始R序列化数据。

实现反序列化的方案

使用纯Python实现的R序列化解析库rdata即可完成解析,该库无需依赖系统R解释器,自主实现R数据格式解析逻辑。

  1. 安装依赖
    执行pip命令安装rdata:
    pip install rdata
  2. 完整处理代码
import bz2
import rdata

# 读取压缩文件并解压
with open("./rbinfile.dat","rb") as fObj:
    xzip = fObj.read()
x = bz2.decompress(xzip)

# 解析R序列化数据
parsed_data = rdata.parser.parse_data(x)
result = rdata.conversion.convert(parsed_data)

# 输出结果为[1, 2, 3]
print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:15:09