2012-03-17 4 views
0

Я написал код, который довольно прост, но я не могу понять одно. код выглядит, чтоEOF после прочтения файла?

name = open("test.txt") 

def CountLines(name): 
    return len(name.readlines()) 

def CountChars(name): 
    return len(name.read()) 


print(CountLines(name)) 
print(CountChars(name)) 

А теперь говорят, "test.txt" содержит 4 строки текста (line1, line2, line3, line4). После запуска этого кода я получаю вывод:

4 
0 

Первый, это нормально, но почему второй - 0? Потому что более ранняя функция установлена ​​в EOF? И если да, то почему он не читает файл с самого начала? Есть ли способ перезагрузить файл?

ответ

2

Да, второе - 0, потому что вы уже прочитали весь файл, так что в CountChars ничего не осталось.

Вы должны поставить name.seek(0) туда, чтобы вернуться в начало файла, прежде чем позвонить CountChars. Проверьте file object documentation.

+1

В качестве альтернативы, храните и повторно анализируйте данные для чтения. –

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