首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图回溯回购(CookieJar)

试图回溯回购(CookieJar)
EN

Stack Overflow用户
提问于 2014-12-17 04:53:42
回答 1查看 95关注 0票数 0

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

代码语言:javascript
复制
cjs = repr(myCJ)
cj = eval(cjs)

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

代码语言:javascript
复制
>>> 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字符串的第一个字符,其中前几个字符是:

代码语言:javascript
复制
>>> cjs[:50]
"<cookielib.CookieJar[Cookie(version=0, name='AMAut"

在研究repr函数是否存在问题之前,我可以知道我正在做的事情是否有根本的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-17 04:56:53

不能保证repr能够eval。您应该通过pickle序列化对象,这是为对象序列化和反序列化而设计的。就像这样:

代码语言:javascript
复制
import cPickle
cjs = cPickle.dumps(myCJ)
cj = cPickle.loads(cjs)

在这种情况下,CookieJar返回的表示形式不是远程有效的Python语法。如果您一定要处理这个语法,您可以尝试

代码语言:javascript
复制
cookielist = eval(cjs[ len('<cookielib.CookieJar') : -len('>') ])

若要提取cookie列表,请从其中创建一个CookieJar。但我不能保证这会奏效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27518562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档