代码:
import pickle
test = 3
>>> with open('test', 'wb') as file:
... pickle.dumps(test, file)
并意外报告错误。
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
TypeError: an integer is required (got type _io.BufferedWriter)
这里发生了什么?
答案 0 :(得分:10)
您正在使用错误的功能。这是文档:
dumps(obj, protocol=None, *, fix_imports=True)
将对象的pickled表示作为
bytes
对象返回。
dumps
将传递的对象转换为bytes
并返回它。你得到的错误是当你将文件参数传递给.dump
期望的酸洗协议时,它应该是一个整数。
您需要使用实际转储到文件的pickle.dump
:
dump(obj, file, protocol=None, *, fix_imports=True)
将
obj
的腌制表示写入<{1}}到打开的文件对象file
。
with open('test', 'wb') as file:
pickle.dump(test, file)