';int';对象没有属性'__获取项目';用python
嗨,伙计们,我得到了错误:';int';对象没有属性'__获取项目';用python,python,Python,嗨,伙计们,我得到了错误: 'int' object has no attribute '__getitem__' 排队 byte_string = '>{}'.format('B'*len_their_ips[0]) 循环的整体功能是: byte_string = '>{}'.format('B'*len_their_ips[0]) their_ips = [] for count in range(num_their_ips[0]):
'int' object has no attribute '__getitem__'
排队
byte_string = '>{}'.format('B'*len_their_ips[0])
循环的整体功能是:
byte_string = '>{}'.format('B'*len_their_ips[0])
their_ips = []
for count in range(num_their_ips[0]):
start = 13 + (count*len_their_ips[0])
end = start + len_their_ips[0]
ip = struct.unpack(byte_string, payload[start:end])
print 'IP #{}: {}'.format(count+1, ip)
their_ips.append(ip)
以前,当我将值设置为元组时,这段代码可以正常工作,但由于更改为数组,我会遇到此错误,但是我不确定要更改什么来修复它
谢谢
编辑:
完整代码:
tm = struct.unpack(">L", payload[0:4])[0]
our_or_ip_version = struct.unpack(">B", payload[4])[0]
our_or_addr_len = struct.unpack(">B", payload[5])[0]
if our_or_addr_len == 4:
our_op_ip = struct.unpack(">BBBB", payload[6:10])[0]
num_their_ips = struct.unpack(">B", payload[10])[0]
len_their_ips = struct.unpack(">B", payload[12])[0]
# Much better way to unpack the packet, does unpacking dynamically rather than set values
byte_string = '>{}'.format('B'*len_their_ips[0])
their_ips = []
for count in range(num_their_ips[0]):
start = 13 + (count*len_their_ips[0])
end = start + len_their_ips[0]
ip = struct.unpack(byte_string, payload[start:end])
print 'IP #{}: {}'.format(count+1, ip)
their_ips.append(ip)
抱歉,如果这些都很简单,我对python真的很陌生:(
编辑:
现在不再给我任何错误,尽管我知道有两个ip地址,但它只返回一个给我,有什么想法吗?您正在为len_-ips
和其他变量分配一个整数:
len_their_ips = struct.unpack(">B", payload[12])[0]
num_their_ips = struct.unpack(">B", payload[10])[0]
len_their_ips = struct.unpack(">B", payload[12])[0]
您不需要再次索引这些:
byte_string = '>{}'.format('B'*len_their_ips)
其他地点也一样:
for count in range(num_their_ips):
start = 13 + (count*len_their_ips)
end = start + len_their_ips
len_他们的ip
似乎是一个int
而不是一个数组。你可以在问题出现之前打印它。请包括你指定len_他们的ip
值的那一行。你称什么样的数据结构为array
-字典?为了对一切的热爱,请阅读。@jornsharpe感谢你的链接顺便说一句,偷窃正在进行中。谢谢,但是现在循环不起作用,我只得到一个ip地址,虽然有2个,有什么想法吗
for count in range(num_their_ips):
start = 13 + (count*len_their_ips)
end = start + len_their_ips