what read open loads from extension example does cpickle and python serialization pickle python-3.2

read - python pickle dump and load



Uso de pickle.dump en Python (2)

Estoy tratando de aprender a usar el módulo pickle en Python:

import pickle x = 123 f = open(''data.txt'',''w'') pickle.dump(x,f)

Esto es lo que obtengo:

Traceback (most recent call last): File "D:/python/test.py", line 5, in <module> pickle.dump(x,f) TypeError: must be str, not bytes

Sin embargo, este código funciona bien:

import pickle dump = pickle.dump(123) print(dump)


¿Qué estoy haciendo mal?


El método de escritura para objetos tipo archivo, solo acepta un único argumento de cadena. El método de volcado en el módulo pickle automáticamente convierte los argumentos en forma de cadenas, mientras que el método de volcado escribirá una representación decapada del objeto en el archivo abierto. Ya que 123 no es una cadena, lanza el error TypeError.

Esto se reconoce en la documentación de pickle.dump .


El problema es que estás abriendo el archivo en modo de texto. Necesitas usar binario aquí:

>>> f = open(''data.txt'',''w'') >>> pickle.dump(123,f) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: must be str, not bytes >>> >>> f = open(''data.txt'',''wb'') >>> pickle.dump(123,f) >>>