我尝试像这样挑选一个CookieJar对象:
import cookielib
import pickle
dumpFile = open('cookie.dump','w')
cj = cookielib.CookieJar()
pickle.dump(cj, dumpFile)
它引发了以下异常:
raise TypeError, "can't pickle %s objects" % base.__name__
TypeError: can't pickle lock objects
CookieJar可以被腌制吗?
答案 0 :(得分:2)
问题的答案是“不”:罐子本身不是腌制的。
但是, jar 中包含的 :
pickle.dump([c for c in cj], dumpFile)
例如,会做的伎俩。 (然后你可以加载结果并将cookie列表插入到一个新的jar中。你可能想要检查它们的到期时间等等。根据你进行酸洗的时间,你可能甚至想要在转储之前检查。 )
答案 1 :(得分:1)
答案是"是",但仅当您使用比pickle
更好的序列化程序时。
>>> import cookielib
>>> import dill
>>>
>>> cj = cookielib.CookieJar()
>>> _cj = dill.dumps(cj)
>>> cj_ = dill.loads(_cj)
>>> cj_
<CookieJar[]>
答案 2 :(得分:0)
使用MozillaCookieJar
或LWPCookieJar
之类的FileCookieJar
实现及其它们的save()
方法可能会更好?