【问题标题】:Can a cookiejar object be pickled?可以腌制 cookiejar 对象吗?
【发布时间】:2013-08-11 07:29:31
【问题描述】:

我尝试像这样腌制一个 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 可以腌制吗?

【问题讨论】:

    标签: python pickle cookiejar


    【解决方案1】:

    问题的答案是“否”:罐子本身不能腌制。

    但是,包含在 jar 中的 cookie,

    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[]>
      

      【讨论】:

        【解决方案3】:

        使用FileCookieJar 的实现(如MozillaCookieJarLWPCookieJar,以及它们的save() 方法)是否会为您提供更好的服务?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-05
          • 1970-01-01
          • 1970-01-01
          • 2017-10-08
          • 2014-10-10
          相关资源
          最近更新 更多