Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将从套接字接收的值与整数进行比较时出现意外结果_Python_Sockets - Fatal编程技术网

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,现在一切正常。非常感谢。