python - Javascript 可以加载 Python pickle 转储的字符串,但不能加载文件
问题描述
请看下面的测试代码,我可以使用 jpickle 库来解码 Python pickle 转储的字符串。
(base):~/python
Python 3.7.3 (default, Mar 27 2019, 16:54:48)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pickle
>>> pickle.dumps('Hello Python!')
b'\x80\x03X\r\x00\x00\x00Hello Python!q\x00.'
>>>
(base)~$ node
> const jpickle = require('jpickle');
undefined
> jpickle.loads('\x80\x03X\r\x00\x00\x00Hello Python!q\x00.')
'Hello Python!'
当我尝试将腌制字符串写入文件时,我无法将其加载回 nodejs 中。我的错误是什么?谢谢!
蟒蛇代码:
import pickle
with open('test.dat', 'wb') as fout:
pickle.dump('Hello Python!', fout)
JS:
const fs = require('fs');
const jpickle = require('jpickle');
const binary = fs.readFileSync('test.dat');
const data = jpickle.loads(binary)
console.log(data)
错误信息:
node_modules/jpickle/lib/jpickle.js:341
throw "Unhandled opcode '" + opcode + "'";
^
Unhandled opcode '128'
package.json中的jpickle,需要从GitHub安装,最新版本:
"jpickle": "git+https://github.com/jlaine/node-jpickle.git"
}
解决方案
推荐阅读
- javascript - 渲染中的 JSX 语法箭头函数
- javascript - 将 Parent Div 缩小到 Foated Children
- docker - 防止访问 docker 容器内的代码
- javascript - Angular6 json模式表单加载Bootstrap模块
- php - 如何设置网站联系表以发送电子邮件
- python - BST中节点数的间接递归小于给定值
- firebase - 如何使用 Firestore 每 3 小时更改一次文档的某个字段?
- c - Bash源代码中的C函数原型有两个名称?
- python - 在 subparser (argparser) 中自定义 add_argument 帮助
- php - 如何调试“您的 SQL 语法有错误;请查看与您的 MariaDB 服务器版本相对应的手册以获取正确的语法使用”