TypeError:使用pickle需要一个整数(获取类型_io.BufferedWriter)

时间:2017-08-31 23:10:34

标签: python file serialization pickle

代码:

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)

这里发生了什么?

1 个答案:

答案 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)