学习python。 not enough values to unpack (expected 2, got 1)

u013052928 2016-04-02 10:24:47
最近在学习廖雪峰的教程,里面有一段代码在我机器上运行时有错误:
import socket
from time import sleep

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(('www.so.com',80))
s.send(b'GET /HTTP/1.1\r\nHost:www.so.com\r\nConnection:close\r\n\r\n')
buffer = []
while True:
d = s.recv(1024)
if d:
buffer.append(d)
#sleep(3)
else:
break
data = b''.join(buffer)
s.close()
header,html = data.split(b'\r\n\r\n',1)
print(header.decode('utf-8'))
with open('index.html','wb') as f:
f.write(html)
print(header)
#with open('index.html','wb') as f:
# f.write(data)


显示错误:
ValueError: not enough values to unpack (expected 2, got 1)

然后我就把data写入index.html文件,写入正常,不是为空。所以,问题出在哪呢。
...全文
28456 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nov7thXD 2018-04-27
  • 打赏
  • 举报
回复
引用 5 楼 penziyo 的回复:
第6行,HTTP前面要有一个空格
因为少了空格,所以导致17行header,html = data.split(b'\r\n\r\n',1)
qq_22821275 2017-10-16
  • 打赏
  • 举报
回复
是因为有些字符串没有b'\r\n\r\n'这些字符,无法按照b'\r\n\r\n'进行分割,所以报错了。
  • 打赏
  • 举报
回复
第6行,HTTP前面要有一个空格
滂沱小雨 2016-07-17
  • 打赏
  • 举报
回复
这是分割的时候标准不能适用与所有的分各项
屎克螂 2016-04-06
  • 打赏
  • 举报
回复
我补充下楼上说的 也就是说你将 header,html = data.split(b'\r\n\r\n',1) 改成 header = data.split(b'\r\n\r\n',1)[0]
  • 打赏
  • 举报
回复
第17行有问题,字符串需要能够split成2份才能赋值给2个变量,你这里的data通过‘\r\n\r\n’无法split成2份。
header,html = data.split(b'\r\n\r\n',1)
sprawling 2016-04-02
  • 打赏
  • 举报
回复
split出错了,是不是分割方法有问题啊。

37,722

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧