#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.