我试图在头文件中找到内容长度的整数。我们目前正在使用适用于某些网站的内容,但不适用于较大的文件(超过9999字节)。我们如何才能在该特定标题的末尾找到换行符,以便我们可以获得内容长度的整数?
content_length = headers[headers.find("Content-Length: ")+16:headers.find("Content-Length: ")+20]
我会尝试搜索“\ r \ n”但这有问题,因为http标头中有很多。很遗憾,我们无法访问urllib。
示例标题:
GET http://example.com/ HTTP/1.1\r\n
Content-Length: 95972\r\n
Keep-Alive: 300\r\n
Connection: keep-alive\r\n\r\n
答案 0 :(得分:1)
简单。假设您的标题存储为字符串:
for line in headers:
if "Content-Length:" in line:
contentLength = line
contentLength = contentLength[16:]
警告:并非所有HTTP标头都包含Content-Length,而且某些标头可能包含多个Content-Length。
答案 1 :(得分:0)
标题以" \ r \ n"结尾并不孤单" \ n"。请阅读RFC for HTTP。
所以,你应该阅读Content-Length标题,直到你点击字符" \ r"然后你可以检查下一个字符将是" \ n"确认。
或正则表达式可以是:"内容长度:\ s + \ d + \ s +"
修改强> 是的,可以有很多" \ r \ n"在体内,但你不必解析所有,你只需要迭代用" \ r \ n"分隔的标题行,并得到以"开头的行; -Length",这就是你要找的东西。此外,HTTP消息正文将在" \ r \ n \ r \ n \ n"之后启动。