Ошибка индекса в этом коде

#python #indexing #file-access

#python #индексирование #доступ к файлу

Вопрос:

Когда я использую это как содержимое входного файла:

 1,3,5,7,9,11
  

Я получаю эту ошибку:

 IndexError: li
  

 with open('fig.fig') as o:
    n = 6
    for i in range(1, 2*n, 2):
        print(o.readlines()[i].replace(' ', ''))
  

Ответ №1:

в следующем коде нет ничего плохого:

 n = 6  
for i in range(1, 2*n, 2):  
    print <something>[i].replace(' ', '')
  

итак, проблема заключается в открытии или чтении вашего файла (действительно открытого? длина строки?). Надеюсь, это поможет.

Ответ №2:

При открытии и обработке файла вы всегда должны быть уверены, что не пытаетесь прочитать больше строк, чем на самом деле есть в файле. Кроме того, вы делаете повторяющиеся вызовы readlines , которые довольно неэффективны. Попробуйте что-то вроде:

 with open('fig.fig') as o:    
    lines = o.readlines()
    n=6
    for i in range(1, min(len(o), n*2), 2):
       print(lines[i].replace(' ', ''))
  

При этом будут считываться строки с нечетными номерами, вплоть до n * 2, или максимальное количество строк в файле, в зависимости от того, что меньше. Вы также должны проверить, существует ли файл (один из способов — использовать os.path.isfile('fig.fig') или обернуть все в блок try.