web-dev-qa-db-ja.com

TypeError:ピクルを使用して整数が必要です(タイプ_io.BufferedWriterを取得しました)

コード:

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)

何が起きてる?

11
user8445949

wrong関数を使用しています。ここにドキュメントがあります:

dumps(obj, protocol=None, *, fix_imports=True)

Returnbytesオブジェクトとしてのオブジェクトのピクル表示。

dumpsは、渡されたオブジェクトをbytesに変換して返します。取得するエラーは、.dumpが酸洗プロトコルであると想定しているものにファイル引数を渡したときに発生します。

実際にファイルにダンプするpickle.dumpを使用する必要があります。

dump(obj, file, protocol=None, *, fix_imports=True)

書き込み開いているファイルオブジェクトobjへのfileのピクル表示。

with open('test', 'wb') as file:
    pickle.dump(test, file)
15
cs95