python中eof表示什么语句错误_python中pickle的EOF错误
根据这些评论,我对最有可能的问题有一个猜测,但至少有50%的可能性我猜错了,在这种情况下……告诉我,我会删除答案。在
我猜你是在尝试使用流套接字,就好像它是一个消息序列一样。这是网络编程新手中非常常见的问题。在
想象一下发送者会这样做:data = pickle.dumps(object);
self.sock.sendall(data)
接受者会这样做:
^{pr2}$
在简单的测试中,这可能在99%的时间内有效,但在实际应用中却行不通。您将收到部分消息,或在一次呼叫中收到多条消息,或上述内容的一些有趣组合(如消息2的一半、消息3的全部和消息4的三分之一)。在
因此,您将向loads传递一条部分消息,并返回一个错误,告诉您它不是一个完整的pickle。在
这并不是因为任何东西都坏了,这才是所谓的工作原理。(TCP)套接字是一个流:一个字节序列,而不是一个消息序列。任何你想在上面建立的结构,你都必须在数据中构建。在
这意味着您必须设计和实现一个协议,以某种方式知道每个消息何时结束。最简单的协议可能是行(显然只有在消息不能有未经转义的换行符时才有用)和netstrings,但是任何能让您清楚地看到某些数据并说“这是消息0,这是消息1,等等”的任何东西都可以工作。在
通常,这意味着将接收到的数据附加到某个缓冲区中,并循环该缓冲区中的消息。例如,使用线条,而不是:while True:
line = sock.recv(4096)
do_stuff(line)
…你需要这个:rdbuf = ''
while True:
rdbuf += sock.recv(4096)
lines = rdbuf.split('\n')
rdbuf = lines[-1]
for line in lines[:-1]:
dostuff(line)
如果你仔细想想,这和文件没什么不同。想象一下这个代码:with open('foo.data', 'wb') as f:
f.write('123')
f.write('45')
with open('foo.data', 'rb') as f:
while True:
number = f.read()
这将读到'12345',而不是{}。如果你想得到'123',你需要一些方法知道只读取3个字节。插入一个长度前缀,或添加空格作为分隔符,或只是外部知道第一个数字总是3位数长…任何都可以,但您必须做一些的事情。在
python中eof表示什么语句错误_python中pickle的EOF错误相关推荐
- python怎么查看代码错误_python中的错误如何查看
python常见的错误有 1.NameError变量名错误 2.IndentationError代码缩进错误 3.AttributeError对象属性错误 4.TypeError类型错误 5.IOEr ...
- python复制出现错误_Python中的错误和异常
前言 错误是程序中的问题,由于这些问题而导致程序停止执行.另一方面,当某些内部事件发生时,会引发异常,从而改变程序的正常流程. python中会发生两种类型的错误. 语法错误 逻辑错误(异常) 语法错 ...
- python的for语句条件_Python中的条件选择和循环语句
Python中的条件选择和循环语句 同C语言.Java一样,Python中也存在条件选择和循环语句,其风格和C语言.java的很类似,但是在写法和用法上还是有一些区别.今天就让我们一起来了解一下. 一 ...
- python中选择结构通过什么语句实现_Python中选择结构通过什么语句实现
Python中选择结构通过什么语句实现 Python中的选择结构语句是 if elif else. Python用缩进代替了Java/C/C++/C#中常用的大括号{}来区分代码块,另外Python在 ...
- python中字典和集合的区别_Python中字典和集合学习小结
映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元组等 包含可变对象的列表. ...
- python异常处理时所使用的保留字_Python中,下列哪个保留字不用于异常处理______________。_学小易找答案...
[单选题]维持细胞生存所必需的最基本的基因是 ( ) [单选题]从体细胞克隆高等哺乳动物的成功说明了 ( ) [单选题]细胞决定与细胞分化的关系是 ( ) [多选题]一种类型的分化细胞转变成另-种类型 ...
- python中的pass是什么意思_Python中pass的作用与使用教程
Python中pass的作用与使用教程 Python中pass的作用 空语句 do nothing 保证格式完整 保证语义完整 以if语句为例,在c或c++/java中: if(true) ; //d ...
- python 不安全的包或方法_Python中的10个常见安全漏洞及修复方法
写安全的代码很困难,当你学习一门编程语言.一个模块或框架时,你会学习其使用方法.在考虑安全性时,你需要考虑如何避免代码被滥用,Python也不例外,即使在标准库中,也存在着许多糟糕的实例.然而,许多 ...
- xjar加密后运行错误_Python中的错误和异常
前言 错误是程序中的问题,由于这些问题而导致程序停止执行.另一方面,当某些内部事件发生时,会引发异常,从而改变程序的正常流程. python中会发生两种类型的错误. 语法错误 逻辑错误(异常) 语法错 ...
- python中if else用法详解_Python 中的 else详解
我们都知道 Python 中else的基本用法是在条件控制语句中的 if...elif...else...,但是 else 还有两个其它的用途,一是用于循环的结尾,另一个是用在错误处理的 try 中. ...
最新文章
- 我哭了,工业界AI项目落地有多难?
- 3-4 第三天 Generator生成器
- linux 64位内存划分,linux 64位内存空间大小?(linux 64 bits memory space size? [closed])
- 大数据分析机器学习(一)之线性模型-年龄和心率关系
- DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016,表挂起
- Ansible and FileBeta
- 实体首部字段-四大首部字段之一
- dede新增字段调用方法
- 小程序毕设作品之微信酒店预订小程序毕业设计(1)开发概要
- MTK camera tuning学习中遇到的一些问题(调试前)
- RS485协议和Modbus协议有什么区别?工业网关能用吗?
- 国内ERP技术公司综合
- 计算机通信技术【计算机网络】学习
- 电商系统商品库的基本功能设计与实现
- javascript版的等额本息计算器
- 欧阳娜娜从阿里跳槽网易:阿里P8堪称教科书级别的面试现场!最后一个问题亮了...
- Term40:若一个类是函数子(functor),则应使它可配接(adaptable)
- 深度剖析MyBatis 的执行流程(3)--映射器
- 鲲鹏鸿蒙概念股,华为鲲鹏概念新龙头股一览 华为鲲鹏概念股有哪些
- JS设置请在微信客户端打开链接提示页面