Cuando trato de pepinillo algo, me sale un AttributeError: 'str' object has no attribute 'write'

Un ejemplo:

import pickle
pickle.dump({"a dict":True},"a-file.pickle")

produce:

...
AttributeError: 'str' object has no attribute 'write'

Lo que está mal?

  • Me interesaría discutir los downvotes… esta pregunta parece trivial, pero que me habría ahorrado un tiempo precioso si ya había estado aquí…
  • ‘twasn no, pero mira el pase de texto en el downvote botón: «Esta pregunta no muestran ningún esfuerzo de investigación…» podría ser la razón de que si la razón estaba en juego. En general, el cuestionamiento downvotes es un desperdicio de esfuerzo; si se quería decirte, que tendría.
  • si una perfectamente buena respuesta a su pregunta es «RTFM», entonces pude ver por qué alguien podría downvote
  • Usted sabe, por LO que es a menudo (generalmente?) un lugar más rápido para obtener una respuesta de la FM, especialmente cuando se recibe un valor informativo excepción (que la cadena es el que no tiene ‘escribir’? tal vez es un «dict»? así pickle espera dict claves para tener métodos de escritura?? ¿qué está pasando??).
  • Es interesante la MANERA de la comunidad le ha dado a esta pregunta el mismo número de arriba y abajo de los votos – parece que la comunidad está dividida sobre el tema!
  • yo no dar una downvote para tu pregunta, pero yo podía ver por qué alguien haría. Eso es todo lo que significaba.
  • de acuerdo en los dos puntos! (: fwiw, personalmente, me gusta tener preguntas como esta aquí – la FM a menudo me molesta 😉 Hmm.. tal vez en el tiempo, las personas que piensan que esto Q útiles upvote. Quizá aquellos que buscan una interesante pregunta a responder que no te gusta?

InformationsquelleAutor drevicko | 2014-09-21

1 Comentario

  1. 65

    Es un error trivial: pickle.dump(obj,file) toma un file objeto, no un nombre de archivo.

    Lo que necesito es algo como:

    with open("a-file.pickle",'wb') as f:
        pickle.dump({"a dict":True},f)

Dejar respuesta

Please enter your comment!
Please enter your name here