Файлы в python. Количество строк в файле
Значит у меня есть код:
studentsfile = open('dataset_3363_4.txt')
q = 0
for i in studentsfile:
q+=1 #посчитали количество строк в файле
lines = studentsfile.readlines()
for k in range(0,q):
print(lines[k].split(';'))
studentsfile.close()
В нем мне нужно посчитать кол-во строк и в дальнейшем это использовать. Но второй цикл for не работает и выдает ошибку:
File "students.py", line 9, in <module>
print(lines[k].split(';'))
IndexError: list index out of range
Еще одно НО в том, что этот цикл работает если убрать счетчик строк. Не понимаю в чем дело. Помогите.
Ответ:
В этой строке вы из файла вычитали все строки из файла и указатель позиции в файле достиг конца:
for i in studentsfile:
Тут вы снова обращаетесь к тому же файловому объекта, чей указатель в конце, поэтому lines будет пустым
lines = studentsfile.readlines()
Решения на месте. Перед .readlines():
- Переоткрыть файл, снова вызвав
open:studentsfile = open('dataset_3363_4.txt') - Или переместить указатель в начало:
studentsfile.seek(0)
PS.
Весь ваш код можно описать так:
with open('dataset_3363_4.txt') as f:
for line in f.readlines():
print(line.split(';'))
Или так:
with open('dataset_3363_4.txt') as f:
for line in f:
print(line.split(';'))