我有一个 TCP 服务器,我希望能够接收数字(整数),但在解决程序的某些输出时遇到一些困难。它输出它应该输出的内容,但此外它还输出一些带有 ValueError 的回溯。我该如何解决这个问题?
Traceback (most recent call last): File "server.py", line 18, in
<module>
data = int(conn.recv(BUFFER_SIZE).strip()); ValueError: invalid literal for int() with base 10: ''
我在这里所做的是将整数发送到服务器:
data = int(conn.recv(BUFFER_SIZE).strip());
foo = data + 1;
if not data: break
print "received data:", data
print "\n foo:", foo
这似乎效果很好,但除了两个打印之外,我还得到了如上所述的回溯:-/
编辑:
感谢您指出这一点。由于数据(或接收)可能为空,我只是将逻辑移至 if 测试下,瞧...:D
data = conn.recv(BUFFER_SIZE).strip();
if not data: break
command = int(data);
foo = command + 1;
最佳答案
正如错误消息所示,int()
呕吐在空字符串上。因此请检查这一点并避免调用 int()
,否则捕获并忽略 ValueError
。
策略一:
data = conn.recv(BUFFER_SIZE).strip()
if data:
data = int(data)
foo = data + 1
if not data: break
策略二:
try:
data = int(conn.recv(BUFFER_SIZE).strip());
except ValueError:
continue
关于python - 获取值错误: invalid literal for int() with base 10: '' during conversion of string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11817482/