栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python为什么说此Netscape cookie文件无效?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python为什么说此Netscape cookie文件无效?

在您的示例代码或cookies.txt文件的副本中,我看不到任何明显错误的内容。

我已经检查了

MozillacookieJar._really_load
方法的源代码,该方法引发了您看到的异常。

该方法所做的第一件事是读取您指定的文件的第一行(使用

f.readline()
),并用于
re.search
查找正则表达式模式
"#(Netscape)? HTTP cookie File"
。这是您的文件失败的原因。

看起来 您肯定

cookies.txt
会匹配该格式,因此您看到的错误非常令人惊讶。

请注意,您的文件是通过前面的一个简单

open(filename)
调用打开的,因此将在具有通用行尾支持的文本模式下打开,这意味着在Windows上运行此文件都没有关系。该代码将看到
n
换行符终止的字符串,而不管文件本身使用了什么换行符约定。

在这种情况下,我要做的是 三重检查 文件的第一行是否正确。它需要包含“#HTTP cookie文件”或“#Netscape HTTP
cookie文件”(仅在空格之间,没有制表符,单词之间,大小写匹配)。使用python提示进行测试:

>>> f = open('cookies.txt')>>> line = f.readline()>>> line'# Netscape HTTP cookie Filen'>>> import re>>> re.search("#( Netscape)? HTTP cookie File", line)<_sre.SRE_Match object at 0x10fecfdc8>

当我

line
在提示符下键入时,Python将行表示形式反馈给我,包括
n
换行符。制表符或Unipre零宽度空格之类的任何意外内容都将在此处显示为转义码。我还验证了
cookiejar
代码使用的正则表达式是否匹配。

您还可以使用

pdb
python调试器来验证
http.cookiejar
模块的实际作用:

>>> import pdb>>> import http.cookiejar>>> jar = http.cookiejar.MozillacookieJar('cookies.txt')>>> pdb.run('jar.load()')> <string>(1)<module>()(Pdb) s--Call--> /opt/local/Library/frameworks/Python.framework/Versions/3.2/lib/python3.2/http/cookiejar.py(1759)load()-> def load(self, filename=None, ignore_discard=False, ignore_expires=False):(Pdb) s> /opt/local/Library/frameworks/Python.framework/Versions/3.2/lib/python3.2/http/cookiejar.py(1761)load()-> if filename is None:(Pdb) s> /opt/local/Library/frameworks/Python.framework/Versions/3.2/lib/python3.2/http/cookiejar.py(1762)load()-> if self.filename is not None: filename = self.filename(Pdb) s> /opt/local/Library/frameworks/Python.framework/Versions/3.2/lib/python3.2/http/cookiejar.py(1765)load()-> f = open(filename)(Pdb) n> /opt/local/Library/frameworks/Python.framework/Versions/3.2/lib/python3.2/http/cookiejar.py(1766)load()-> try:(Pdb) > /opt/local/Library/frameworks/Python.framework/Versions/3.2/lib/python3.2/http/cookiejar.py(1767)load()-> self._really_load(f, filename, ignore_discard, ignore_expires)(Pdb) s--Call--> /opt/local/Library/frameworks/Python.framework/Versions/3.2/lib/python3.2/http/cookiejar.py(1989)_really_load()-> def _really_load(self, f, filename, ignore_discard, ignore_expires):(Pdb) s> /opt/local/Library/frameworks/Python.framework/Versions/3.2/lib/python3.2/http/cookiejar.py(1990)_really_load()-> now = time.time()(Pdb) n> /opt/local/Library/frameworks/Python.framework/Versions/3.2/lib/python3.2/http/cookiejar.py(1992)_really_load()-> magic = f.readline()(Pdb) > /opt/local/Library/frameworks/Python.framework/Versions/3.2/lib/python3.2/http/cookiejar.py(1993)_really_load()-> if not self.magic_re.search(magic):(Pdb) > /opt/local/Library/frameworks/Python.framework/Versions/3.2/lib/python3.2/http/cookiejar.py(1999)_really_load()-> try:

在上面的示例pdb会话中,我使用了

step
next
命令的组合来验证正则表达式test(
self.magic_re.search(magic)
)是否实际通过。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/470501.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号