web-dev-qa-db-fra.com

TypeError: un entier est requis (got type _io.BufferedWriter) using pickle

le code:

import pickle
test = 3

>>> with open('test', 'wb') as file:
...     pickle.dumps(test, file)

et erreur signalée de manière inattendue.

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
TypeError: an integer is required (got type _io.BufferedWriter)

Que se passe t-il ici?

11
user8445949

Vous utilisez la fonction incorrecte . Voici les documents:

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

Return la représentation décapée de l'objet en tant qu'objet bytes.

dumps convertit l'objet passé en bytes et le renvoie. L'erreur que vous obtenez est lorsque vous passez un argument de fichier à ce que .dump s'attend à être le protocole de décapage, qui est censé être un entier.

Vous voudrez utiliser pickle.dump, qui effectue un vidage dans un fichier:

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

Write une représentation décapée de obj vers l'objet fichier ouvert file.

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