Ho un oggetto con un CookieJar che voglio mettere sottaceto.Come mettere un CookieJar sottaceto?
Tuttavia, come probabilmente tutti sapete, il pickle si strozza sugli oggetti che contengono oggetti di blocco. E per qualche ragione orribile, un CookieJar ha un oggetto di blocco.
from cPickle import dumps
from cookielib import CookieJar
class Person(object):
def __init__(self, name):
self.name = name
self.cookies = CookieJar()
bob = Person("bob")
dumps(bob)
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# cPickle.UnpickleableError: Cannot pickle <type 'thread.lock'> objects
Come faccio persistono questo?
L'unica soluzione che posso pensare è utilizzare FileCookieJar.save e FileCookieJar.load in un oggetto stringIO. Ma c'è un modo migliore?
Wow !! La domanda suona come una domanda per lavorare in cucina. Sono stupito dei nomi usati per gli strumenti :) – shahkalpesh
Hai trovato una buona soluzione? Se è così, per favore pubblica. –
@Paul funzionano entrambe le soluzioni di Alex e Anurag. Mentre la soluzione di Anurag è hacker e più veloce, la soluzione di Alex è più generale e più lenta, quindi lascerò decidere alla community quale è meglio. – Unknown