试图评估回复(CookieJar)

时间:2014-12-17 04:53:42

标签: python python-2.7 cookielib

我正在尝试将cookielib.CookieJar.__repr__()输出反序列化回CookieJar对象。我做了:

cjs = repr(myCJ)
cj = eval(cjs)

它给了SyntaxError: invalid syntaxcjs字符串长度超过3,000个字符,上面的第二个语句给出了以下实际输出:

>>> cjx=eval(cjs)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1
    <cookielib.CookieJar[Cookie(version=0, name='AMAuthCookie', value=' ....
...........lots deleted....and next is the actual last line...
comment=None, comment_url=None, rest={}, rfc2109=False)]>
    ^
SyntaxError: invalid syntax

我怀疑^字符指向repr字符串的第一个字符,其中前几个字符是:

>>> cjs[:50]
"<cookielib.CookieJar[Cookie(version=0, name='AMAut"

在我调查repr函数是否给出问题之前,我是否知道我所做的事情是否存在根本性的错误。

1 个答案:

答案 0 :(得分:1)

repr无法保证eval能够使用pickle。您应该通过import cPickle cjs = cPickle.dumps(myCJ) cj = cPickle.loads(cjs) 序列化对象,这是为对象序列化和反序列化而设计的。像这样:

CookieJar

在这种情况下,cookielist = eval(cjs[ len('<cookielib.CookieJar') : -len('>') ]) 给出的表示不是远程有效的Python语法。如果您绝对必须处理此语法,您可以尝试

{{1}}

提取出cookie列表,然后从中创建一个CookieJar。但我不能保证这会奏效。