2016-10-13 5 views
-1

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

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(' ', '')) 

ответ

0

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

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

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

0

При открытии и обработке файла вы всегда должны убедиться, что не пытаетесь читать больше строк, чем на самом деле в файле. Кроме того, вы делаете повторные звонки на 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(' ', '')) 

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

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