Python 将从套接字接收的值与整数进行比较时出现意外结果
我从套接字接收数据,然后将其中一个元素保存为Python 将从套接字接收的值与整数进行比较时出现意外结果,python,sockets,Python,Sockets,我从套接字接收数据,然后将其中一个元素保存为recentnumb 当我在if语句之前打印它时,它正确地打印为0。不幸的是,无论我如何修改表达式,我的if语句总是表现为recentnumb与0不同。有人能解释一下为什么我的if语句没有将recentnumb视为0吗 r = wrappedSocket.recv(1024) v = r.split() recentnumb = v[1] print recentnumb if recentnumb != 0: Dothis() else:
recentnumb
当我在if
语句之前打印它时,它正确地打印为0。不幸的是,无论我如何修改表达式,我的if
语句总是表现为recentnumb
与0不同。有人能解释一下为什么我的if
语句没有将recentnumb
视为0吗
r = wrappedSocket.recv(1024)
v = r.split()
recentnumb = v[1]
print recentnumb
if recentnumb != 0:
Dothis()
else:
OrDothis()
docs state
socket.recv()
“返回值是一个表示
“收到的数据”,您可以尝试
int(v[1])
文档状态socket.recv()
“返回值是表示
“收到的数据”,您可以尝试
int(v[1])
这是python 2还是python 3?考虑到r.split()。在Python2上,str
永远不会等于0。在Python3上,您会遇到一个错误。文档状态为“返回值是表示接收到的数据的字符串”,您可以尝试int(v[1])
该列表的格式是什么?TCP是一种流协议,而不是消息传递协议。不能保证单个recv
能够准确地获取在单个send
@downshift中编写的内容,这在python 2中是正确的。在3中,它的字节。OP使用Python3的打印形式,但是这段代码会在Python3中引发一个异常。最好的消息来源!当然,你的建议无论哪种方式都有效。。。假设recv
真的得到了完整的列表。@tdelaney是Python 2,你是对的。我刚将recentnumb格式化为int,现在一切正常。谢谢这是python 2还是python 3?考虑到r.split()。在Python2上,str
永远不会等于0。在Python3上,您会遇到一个错误。文档状态为“返回值是表示接收到的数据的字符串”,您可以尝试int(v[1])
该列表的格式是什么?TCP是一种流协议,而不是消息传递协议。不能保证单个recv
能够准确地获取在单个send
@downshift中编写的内容,这在python 2中是正确的。在3中,它的字节。OP使用Python3的打印形式,但是这段代码会在Python3中引发一个异常。最好的消息来源!当然,你的建议无论哪种方式都有效。。。假设recv
真的得到了完整的列表。@tdelaney是Python 2,你是对的。我刚将recentnumb格式化为int,现在一切正常。非常感谢。