Ответ 1
Вы можете reset указатель файла, вызывая seek()
:
file.seek(0)
сделает это. Вам понадобится эта строка после первого readlines()
. Обратите внимание, что file
должен поддерживать произвольный доступ для работы выше.
Скажем, у меня есть этот простой python script:
file = open('C:\\some_text.txt')
print file.readlines()
print file.readlines()
Когда он запускается, первая печать печатает список, содержащий текст файла, а вторая печать печатает пустой список. Не совсем неожиданно. Но есть ли способ "открутить" файл, чтобы я мог его прочитать снова? Или самый быстрый способ просто открыть его?
Вы можете reset указатель файла, вызывая seek()
:
file.seek(0)
сделает это. Вам понадобится эта строка после первого readlines()
. Обратите внимание, что file
должен поддерживать произвольный доступ для работы выше.
Для небольших файлов, вероятно, гораздо быстрее сохранить содержимое файла в памяти
file = open('C:\\some_text.txt')
fileContents = file.readlines()
print fileContents
print fileContents # This line will work as well.
Конечно, если это большой файл, это может вызвать нагрузку на вашу оперативную память.
Помните, что вы всегда можете использовать оператор with для открытия и закрытия файлов:
from __future__ import with_statement
with open('C:\\some_text.txt') as file:
data = file.readlines()
#File is now closed
for line in data:
print line