一个cookiejar对象可以被序列化吗?

4

我尝试像这样对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可以被pickle化吗?
3个回答

3

作为问题的回答,是“不行”:这个瓶子本身不能被泡制成腌菜。

然而,瓶子中包含的饼干,则可以被泡制成腌菜:

pickle.dump([c for c in cj], dumpFile)

例如,将会起到作用。 (然后您可以加载结果并将cookie列表插入新的jar文件中。 但是,您可能希望首先检查它们的过期时间等。 根据选择的时间,您甚至可能希望在转储之前进行检查。)


2
答案是“是”,但只有在使用比pickle更好的序列化器时才是如此。
>>> import cookielib
>>> import dill
>>> 
>>> cj = cookielib.CookieJar()
>>> _cj = dill.dumps(cj)
>>> cj_ = dill.loads(_cj)
>>> cj_
<CookieJar[]>

0

你是否可以使用FileCookieJar的实现,例如MozillaCookieJarLWPCookieJar以及它们的save()方法来更好地服务于你?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接