import cgitb
import Cookie, urllib2
from cookielib import FileCookieJar
cgitb.enable()
c = Cookie.SmartCookie()
c['ini'] = 1
savedc = FileCookieJar()
savedc.add_cookie_header(c.output())
savedc.save()
Run Code Online (Sandbox Code Playgroud)
这不是保存饼干吗?...
我一直在阅读python文档,如100万次,我只是不明白:(
请帮助某人:(
Raf,我只能说,是Egads!文档肯定是不明确!我已经使用Python多年了,这个简单的Stack Overflow问题,我认为在开始实际工作之前我很快就会抓住这个问题花了我二十多分钟来回答.:-)
第一:事实证明,"Cookie"库和"cookielib"库是完全分开的,彼此无关.这在文档中说明,但您必须向下滚动到每个文档页面的"另请参见"部分才能找到它.如果它位于每个页面的顶部,那将会很有帮助.
因此,当您将一个对象从"Cookie"库传递到"cookielib"时,您会混淆"cookielib"内部因为它将cookie存储在词典中并且"Cookie"cookie看起来像 - 猜猜是什么! - 字典,因此"cookielib"将其混淆为其内部数据结构之一并将其他cookie保存在其中.我得到的错误是:
<type 'exceptions.AttributeError'>: 'str' object has no attribute 'discard'
args = ("'str' object has no attribute 'discard'",)
message = "'str' object has no attribute 'discard'"
Run Code Online (Sandbox Code Playgroud)
实际上,这是我在不属于那个Cookie.Cookie对象上粘贴一堆属性之后得到的错误,但是在我意识到我正在尝试获取Cookie.Cookie的无望任务之前我添加了这个错误.表现得像一个cookielib.Cookie.:-)早期的错误都是属性缺失错误,如:
<class 'Cookie.CookieError'>: Invalid Attribute name
args = ('Invalid Attribute name',)
message = 'Invalid Attribute name'
Run Code Online (Sandbox Code Playgroud)
(而且我将这些错误放在这里,以防一些可怜的未来灵魂混淆了Cookie类并且谷歌搜索我刚刚做了,没有一个出现任何我得到的错误的结果!)
因此,在我们继续前进之前,我必须知道:您是否尝试像网络服务器一样,向客户提供Cookie并在客户端发送下一个请求时尝试将其恢复原状,在这种情况下,我应该向您展示" Cookie"模块有效吗?或者,您是在编写一个Web客户端,用于测试还是为了好玩,它会将它与Web请求发送到网站的cookie混淆,在这种情况下我们应该谈论"cookielib"?