';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