2017-07-29 2 views
0

Mon scirpt:IndexError: liste des index hors de portée

if 'recheck' == msg.lower(): 
    with open('Output.txt','r') as rr: 
     contactArr = rr.readlines() 
     for v in xrange(len(contactArr) -1,0,-1): 
      num = re.sub(r'\n', "", contactArr[v]) 
      contacts.append(num) 
      pass 
     contacts = list(set(contacts)) 
     for z in range(len(contacts)): 
      arg = contacts[z].split('|') 
      if arg[1] == receiver.id : 
       userList.append(arg[0]) 
       timelist.append(arg[2]) 
     uL = list(set(userList)) 
     # print uL 
     for ll in range(len(uL)): 
      try: 
       getIndexUser = userList.index(uL[ll]) 
       timeSeen.append(strftime("%H:%M:%S", localtime(int(timelist[getIndexUser])/1000))) 
       recheckData.append(userList[getIndexUser]) 
      except IndexError: 
       conName.append('nones') 
       pass 

     contactId = client._getContacts(recheckData) 
     for v in range(len(recheckData)): 
      dataResult.append(contactId[v].displayName + '['+timeSeen[v]+']') 
      pass 
     # # print len(recheckData) 
     tukang = "V=ON Members=V\n[*]" 
     grp = '\n[*] '.join(str(f) for f in dataResult) 
     receiver.sendMessage("%s %s" % (tukang, grp)) 

Mais erreur dans le terminal:

Traceback (most recent call last): 
    File "echobot.py", line 117, in <module> 

    if arg[1] == receiver.id : 

IndexError: list index out of range 

Pouvez-vous me aider?

+1

Si '|' n'était pas présent dans les contacts [z], vous obtiendrez arg comme un tableau de seulement 1 élément. Dans ce cas, invoquer arg [1] échouerait évidemment. – jitendra

Répondre

0

L'erreur vient vous devriez doubler vérifier que vos contacts sont tous correctement mis en forme de

arg = contacts[z].split('|') 
if arg[1] == receiver.id : 
    userList.append(arg[0]) 
    timelist.append(arg[2]) 

. Selon ce code, chaque contact doit être formaté comme

utilisateur

| id | temps

Si chaque contact dans les contacts ne sont pas formaté exactement de cette façon, cette erreur sera levée. Il semble que votre division ('|') ne trouve aucun '|' se diviser.