2013-04-22 2 views
-6

Я все еще новичок с python и xml. Следующая ошибка слишком беспокоит меня. Ниже это отслеживающий беспорядок, который я получаю (ошибка) при выполнении следующего кода:IndexError: индекс индекса вне диапазона

Traceback (most recent call last): 
    File "path", line 66, in <module> 
    print slidename[a].childNodes[0].nodeValue 
IndexError: list index out of range 

из этого кода:

for object in os.listdir(my_directory): 
     print (object) 
     if '.zip' in object: 
      #print (object) 
      new = os.path.splitext(object) 
      #print (new[0]) 
      file_name.append(new[0]) 
      os.mkdir(my_directory+new[0], 0o777) 
      with zipfile.ZipFile(my_directory+new[0]+new[1], "r") as z: 
       z.extractall(my_directory+new[0]) 

count = 0 

for len_num in range(0,len(file_name)): 

    for doc in os.listdir(my_directory+file_name[len_num]+new_directory): 
      if '.xml' in doc: 
        #print doc 
        slide_name = os.path.splitext(doc) 
        #print slide_name 
        print ((file_name)[len_num])+'>>>'+((slide_name)[0]) 
        file= xml.dom.minidom.parse(my_directory+((file_name)[len_num])+new_directory+doc) 
        tagname = file.getElementsByTagName('a:t') 
        #print tagname 

        for a in range(0,len(tagname)): 
         print tagname[a].childNodes[0].nodeValue 

Заранее спасибо !!

+0

К сожалению, мы не делаем «срочно» здесь переполнение стека. Можете ли вы включить * full * traceback для этого исключения? –

+0

где эта ошибка? –

+0

Я предполагаю, что 'tagname [a] .childNodes [0]' генерирует исключение. Но это просто предположение, потому что у нас слишком мало информации, чтобы воспроизвести ошибку. –

ответ

3

Вы анализируете XML, который не имеют дочерние узлы для этого конкретного элемента slidename[a]. Вероятно, вы захотите пропустить этот.

Вы не используете петли Python в полном объеме. Там нет никакой необходимости в цикле по индексам, когда вы можете цикл непосредственно над самим списком:

for a in tagname: 
    try: 
     print a.childNodes[0].nodeValue 
    except IndexError: 
     print 'No childNodes for this element' 
+0

Большое вам спасибо !!! – Sangamesh

Смежные вопросы